6

特性を使用するモデルをシリアライズしようとすると、JMSSerializer はその特性に含まれるプロパティをシリアライズしません。yaml を使用してシリアライザーを構成していますが、機能していないようです。

trait IdentityTrait
{

    protected $id;

    public function setId($id)
    {
        $this->id = $id;

        return $this;
    }

    public function getId()
    {
        return $this->id;
    }
}

class OurClass {
   use IdentityTrait;

   protected $test;

   public function getTest() {
       $this->test;
   }
}

JMSSerializerBundle が使用され、次の yaml が配置されます。Resources/config/serializer/Model.Traits.IdentityTrait.yml

MyProject\Component\Core\Model\Traits\IdentityTrait:
    exclusion_policy: NONE
    properties:
    id:
        expose: true

そして、OurClass構成は次の場所にありますResources/config/serializer/Model.OurClass.yml

 MyProject\Component\Core\Model\OurClass:
     exclusion_policy: NONE
     properties:
         test:
             expose: true

問題に集中するために一部のコードは無視されています

4

2 に答える 2

1

PHP トレイトはPHP 5.4.0以降に導入され、最新の JMSSerializer コードはPHP 5.3.2をサポートします。注:"require": {"php": ">=5.3.2",コードを調べてみると、この機能は (まだ) サポートされていません。この問題は、JMSSerializer github のこの問題に非常に関連しています。

于 2014-11-15T18:45:40.167 に答える