2014-04-30 24 views
5

Etiket nesnesinin serileştirilme şeklinin üzerine yazabilir miyim? Şu anda her şey iade edildi, id, create_at, updated_at ve etiketlemeyi hariç tutmak istiyorum. JMS Serializer paketini kullanıyorum, FPN Tag Bundle ile etiketlenebilir Doktrin Uzantıları.DoctrineExtensions için serializer meta verilerinin üzerine yazın Etiketlenebilir

Bu benim kurulumumdur, Varlığın ad alanı aslında DoctrineExtensions sorunu olabileceğinden Tag Bundle'ın ebeveynini FPN olarak ayarlamayı düşünüyorum.

Çoğu varlık parametresi DoctrineExtensions \ Taggable \ Entity \ Tag (id, name, created_at vb.) Dizinindedir. DoctrineExtensions'ı genişleten FPN paketinin üzerine yazıyorum. DoktriniExtensions bir paket değil bir kütüphanedir.

Bunu nasıl yapabilirim?

+0

'maruz: TRUE (isim özelliği için) düzgün girintili görünmüyor

Kişisel yapılandırma sonra böyle bir şey olması gerekir. Sorunuzdaki ya da gerçek yaml dosyanızdaki bir yazım hatası mı? –

+0

Ayrıca, aşağıdakilerden birini yapılandırmanın gerçekten hiç kullanılmakta olup olmadığını kontrol etmek için aşağıdakilerden birini ekleyebilir misiniz? 'serialized_name:' fooBar ' –

+0

Evet, bir yazım hatası düzeltdim. Symfony yanlış bir şekilde girintiyse, bir yaml ayrıştırma hatası atmış olmalıdır. Serialized_name kısaca değiştireceğim. – shapeshifter

cevap

1

JMSSerializer, serileştirme yapılandırmanızı, özelliklerin bildirildiği ile aynı ad alanında tanımlamanızı gerektirir.

Örneğin, diyelim ki $createdAt ve $updatedAt özelliklere sahip Application\Bundle\AcmeBundle\Entity\BaseModel sınıf ve $name özelliğiyle BaseModel sınıfını miras bir Application\Bundle\AcmeBundle\Entity\Model sınıf var diyelim. Bu durumda, 2 serileştirme dosyasına ihtiyacınız olacaktır: $createdAt ve $updatedAt özellikleri için serileştirme yapılandırmasıyla Entity.BaseModel.xml; ve $name özelliğinin yapılandırmasıyla birlikte Entity.Model.xml adı verilir.

FPNTagBundle kuyusunun yapılandırmasını geçersiz kıldınız, ancak geçerli yapılandırmanızla serileştirme için yapılandırabileceğiniz tek alan $slug alanıdır (FPN\TagBundle\Entity\Tag sınıfında tanımlanmıştır). Diğer alanlar için, DoctrineExtensions\Taggable\Entity\Tag'un yapılandırma dizinlerini geçersiz kılmanız gerekir.

# app/config/config.yml 
# ... 
jms_serializer: 
    metadata: 
     auto_detection: true 
     directories: 
      TagBundle: 
       namespace_prefix: "FPN\\TagBundle" 
       path: "@MYTagBundle/Resources/config/serializer/fpn" 
      DoctrineTaggable: 
       namespace_prefix: "DoctrineExtensions\\Taggable" 
       path: "@MYTagBundle/Resources/config/serializer/doctrine" 


# 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 
# MY\TagBundle\Resources\config\serializer\fpn\Entity.Tag.yml 
FPN\TagBundle\Entity\Tag: 
    exclusion_policy: ALL 
    properties: 
     slug: 
      expose: false # or true, as you wish :) 
İlgili konular