Symfony JMS序列化程序包:获取具有*@ExclutionPolicy(“all”)的所有实体的列表
我正在使用Symfony JMS序列化程序包:获取具有*@ExclutionPolicy(“all”)的所有实体的列表,symfony,doctrine-orm,Symfony,Doctrine Orm,我正在使用排除政策(All)过滤条令实体 是否可以使用方法调用来获取激活ExclutionPolicy注释的所有实体(在项目或捆绑包中)的列表?有几种方法可以从序列化中排除值。就你而言,我认为最好的选择是 直接从我链接到的文档中,执行以下操作: use JMS\Serializer\Annotation\Groups; class BlogPost { /** @Groups({"list", "details"}) */ private $id; /** @Grou
排除政策(All)
过滤条令实体
是否可以使用方法调用来获取激活ExclutionPolicy注释的所有实体(在项目或捆绑包中)的列表?有几种方法可以从序列化中排除值。就你而言,我认为最好的选择是 直接从我链接到的文档中,执行以下操作:
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;
}
$view = $this->view($data, 200);
$view->setSerializationContext(
SerializationContext::create()->setGroups(array('list'))
);
return $this->handleView($view);
我不确定序列化的目的是什么,但如果您使用的是FOSRestBundle并序列化您的响应,则只需序列化特定组所需执行的操作如下:
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;
}
$view = $this->view($data, 200);
$view->setSerializationContext(
SerializationContext::create()->setGroups(array('list'))
);
return $this->handleView($view);
使用此配置,将不包括$comments
。因此,通过定义已定义的组,可以排除任何需要的属性
如果您没有使用FOSRestBundle,您可以按照文档中提到的方式设置组:
use JMS\Serializer\SerializationContext;
$serializer->serialize(
new BlogPost(),
'json',
SerializationContext::create()->setGroups(array('list'))
);