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'))
);