Kann ich die Art und Weise überschreiben, wie das Tag-Objekt serialisiert wird? Derzeit wird alles zurückgegeben, ich möchte die ID, created_at, updated_at und tagging ausschließen. Ich verwende das JMS Serializer Bundle, Doctrine Extensions Taggable mit FPN Tag Bundle.Überschreiben Sie Serializer-Metadaten für DoctrineExtensions Taggable
Das ist mein Setup, ich denke, die Eltern des Tag Bundle zu FPN setzen, wenn der Namespace der Entität DoctrineExtensions tatsächlich das Problem sein könnte.
Die meisten Entitätsparameter befinden sich in DoctrineExtensions \ Taggable \ Entity \ Tag (ID, Name, Erstelldatum usw.). Ich überschreibe das FPN-Paket, das DoctrineExtensions erweitert. DoctrineExtensions ist eine Bibliothek, kein Bündel.
Wie kann ich das tun?
# app/config/config.yml
# ...
jms_serializer:
metadata:
auto_detection: true
directories:
TagBundle:
namespace_prefix: "FPN\\TagBundle"
path: "@MYTagBundle/Resources/config/serializer/fpn"
# MY\TagBundle\Resources\config\serializer\fpn\Entity.Tag.yml
FPN\TagBundle\Entity\Tag:
exclusion_policy: ALL
properties:
id:
expose: false
name:
expose: true
created_at:
expose: false
updated_at:
expose: false
tagging:
expose: false
# src/MY/TagBundle/Entity/Tag.php
<?php
namespace MY\TagBundle\Entity;
use FPN\TagBundle\Entity\Tag as BaseTag;
class Tag extends BaseTag
{
}
# vendor/fpn/tag-bundle/FPN/TagBundle/Entity/Tag.php
<?php
namespace FPN\TagBundle\Entity;
use DoctrineExtensions\Taggable\Entity\Tag as BaseTag;
class Tag extends BaseTag
{
....
}
# src/MY/TagBundle/MYTagBundle.php
<?php
namespace MY\TagBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class MYTagBundle extends Bundle
{
// Is this unnecessary due to config.yml?
public function getParent()
{
return 'FPNTagBundle';
}
}
'aussetzen: true' (für die Eigenschaft name) scheint nicht richtig eingezogen werden. Ist das ein Tippfehler in Ihrer Frage oder in Ihrer eigentlichen Yaml-Datei? –
Können Sie außerdem einer der Eigenschaften Folgendes hinzufügen, um zu überprüfen, ob die Konfiguration überhaupt verwendet wird? 'serialized_name: 'fooBar'' –
Ja das war ein Tippfehler ich habe es behoben. Symfony hätte einen YAML-Parser-Fehler bei falscher Einrückung ausgeben müssen. Ich werde den serialisierten_namen in Kürze ändern. – shapeshifter