symfonyのJMSグループ内のフィールドのみをシリアル化できますか?グループ内のシリアル化された値jms symfony
return $this->json($products, Response::HTTP_CREATED, [],
['groups' => ['user']]);
私はすべてのユーザーの詳細ではなく、ユーザーIDのみをシリアル化したいと考えています。 アイデア
EDIT:メソッドjson()はControllerTraitに属します。
symfonyのJMSグループ内のフィールドのみをシリアル化できますか?グループ内のシリアル化された値jms symfony
return $this->json($products, Response::HTTP_CREATED, [],
['groups' => ['user']]);
私はすべてのユーザーの詳細ではなく、ユーザーIDのみをシリアル化したいと考えています。 アイデア
EDIT:メソッドjson()はControllerTraitに属します。
機能ControllerTrait::json
は、symfony/serializer
であり、jms/serializer
ではありません。
JMSシリアライザは複雑なシリアライゼーション/デシリアライズを実行する手段を提供しますが、Symfonyのシリアライザはそれらの機能のサブセットのみを持ちます。おそらく、JMSのシリアライザずに逃げる、ちょうどあなたの使用を確認して行うことができます:
Symfony\Component\Serializer\Annotation\Groups
の代わり:
JMS\Serializer\Annotation\Groups
例
class User
{
/**
* @Groups({"simple", "super_simple"})
*/
private $id;
/**
* @Groups({"full"})
*/
private $username;
/**
* @Groups({"full"})
*/
private $token;
/**
* @var Role
*/
private $role;
}
class Role{
/**
* @Groups({"simple"})
*/
private $id;
/**
* @Groups({"full"})
*/
private $description;
}
そして、あなた可能性do:
$role = new Role(1, "Some role");
$user = new User(1, "foo", "bar", $role);
// Returns ids of both User and Role
$ids = $this->json($user, Response::HTTP_CREATED, [], ['groups' => ['simple']]);
// Returns id of User entity only (note the different group)
$ids = $this->json($user, Response::HTTP_CREATED, [], ['groups' => ['super_simple']]);
ちょうど、シリアル化注釈が有効になっていることを確認してください(framework
)。 serializer
。 enable_annotations
:true
あなたconfig.yml
)
では、この上のドキュメントを参照してください:
https://symfony.com/doc/current/serializer.html#using-serialization-groups-annotations
ホープ、これはビットを助け...
[OK]を、それでも、私はsymfonyのを使用する場合/シリアライザ方法ユーザー全体ではなく、ユーザーエンティティからIDだけを抽出できますか?私は次のようなものを試しました:['groups' => ['user']。['id']]しかし明らかにその機能していない.. – IleNea
上記の更新を参照してください... –
あなたのアプローチは分かります。 ['groups'] => ['consumer']アノテートされている他のクラスのフィールドは、どのように表示できますか?それは私が達成しようとしていたことです。 – IleNea