我在Symfony projuect中使用JMS序列化程序,我对此有疑问。我想要只从一个特定的方法(一个路由)暴露实体的属性,在其他情况下我不希望暴露这个属性。我会很感激任何建议)
答案 0 :(得分:1)
您可以使用属性上的@Groups
注释来实现此目的,然后告诉序列化程序在控制器中序列化哪些组。
use JMS\Serializer\Annotation\Groups;
class BlogPost
{
/** @Groups({"list", "details"}) */
private $id;
/** @Groups({"list", "details"}) */
private $title;
/** @Groups({"list"}) */
private $nbComments;
/** @Groups({"details"}) */
private $comments;
private $createdAt;
}
然后:
use JMS\Serializer\SerializationContext;
$serializer->serialize(new BlogPost(), 'json', SerializationContext::create()->setGroups(array('list')));
//will output $id, $title and $nbComments.
$serializer->serialize(new BlogPost(), 'json', SerializationContext::create()->setGroups(array('Default', 'list')));
//will output $id, $title, $nbComments and $createdAt.
更多信息here。