私はSymfony 3、Doctrine 2、FOS RestバンドルとJMSシリアライザを使用しています。 私は、アプリ全体で[すべてを除外]ポリシーを使用して、フィールドを選択的に公開しています。Jmsシリアライザ動的露出
ユーザーエンティティでは、現在のユーザーに対してのみ追加のフィールドを公開できます。
たとえば、通常のapi/user/{id}
エンドポイントでは、通常のデータを公開したいが、次にapi/user/current
のデータを少しだけ公開したい。
例:
/**
* ...
* @Serializer\ExclusionPolicy("all")
*/
class Users implements UserInterface
{
/**
* @var string
* @Serializer\Expose
*
* @ORM\Column(name="name", type="string", length=255, nullable=true)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="secretfield", type="string", length=255, nullable=true)
*/
private $secretfield;
私は@groups
デコレータを試してみましたが、それはフィールドのみダウン削るを促進するために働き、私は負荷を変更し、どこでも「デフォルト」グループのコンテキストを設定するように注意して必要になります。
私はthe docsに記載されているDynamic Exclusion Strategyを見ましたが、私が必要としているかどうか、そしてどの変数を使って式を構築することができるかわかりません。
これを行うにはどのような方法が最適でしょうか?
あなたはこのようなグローバルグループを設定した場合、あなたはすべての単一のエンティティクラスで、すべてのグループを指定する必要があります表示したいプロパティーなので、理想的ではありません。 exposeを使用すると、特定のエンティティにデフォルトでは何も公開されず、公開するエンティティを指定することができますが、他のファイルではすべて公開される可能性があります。このメソッドでは、すべてを返すだけのエンティティ内のすべてのプロパティに注釈を付ける必要があります。 – Jayd