Serialization JMS序列化程序:忽略关联实体的排除策略
我用它上了两门课 这是班上的人:Serialization JMS序列化程序:忽略关联实体的排除策略,serialization,symfony,jms-serializer,Serialization,Symfony,Jms Serializer,我用它上了两门课 这是班上的人: use JMS\Serializer\Annotation as Serializer; /** * @ORM\Entity(...) * @ORM\Table(...) * @Serializer\ExclusionPolicy("none") */ class Person { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(s
use JMS\Serializer\Annotation as Serializer;
/**
* @ORM\Entity(...)
* @ORM\Table(...)
* @Serializer\ExclusionPolicy("none")
*/
class Person
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/** @ORM\Column(type="string", nullable=true) */
private $firstname;
/**
*
* @ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\FOSUser", cascade={"persist"})
*/
private $fosuser;
}
和FOSUser:
use FOS\UserBundle\Model\User as BaseUser;
use JMS\Serializer\Annotation as Serializer;
/**
* Acme\UserBundle\Entity\FOSUser
*
* @ORM\Entity(repositoryClass="Acme\UserBundle\Entity\FOSUserRepository")
* @Serializer\ExclusionPolicy("all")
*/
class FOSUser extends BaseUser
{
/**
* @Serializer\Expose
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", nullable=true)
* */
protected $fullname;
/**
* @ORM\ManyToMany(targetEntity="Educa\UserBundle\Entity\RoleGroup")
* @Serializer\Exclude
*/
protected $groups;
}
然后我叫:
$serializedResponse=$serializer->serialize(
$persons,'json',SerializationContext::create()->enableMaxDepthChecks()
);代码>
我希望每个人都被序列化,在fosuser字段中,只有fosuser的id被公开
然而,它公开了FOSUser对象中的每个字段(例如,$groups
),这与其排除策略相矛盾
注意:FOSUser中添加的任何字段(例如,“$fullname”,在BaseUser中不存在)都会被注释@Serializer\Exclude和/或@Serializer\ExclutionPolicy(“全部”)隐藏
注2:如果我将@Serializer\Exclude标记添加到FOSUser中的覆盖字段(例如$groups),则不会隐藏它。config.yml
jms_serializer:
metadata:
directories:
FOSUserBundle:
namespace_prefix: "FOS\\UserBundle"
path: "@AcmeBundle/Resources/config/serializer"
然后在/src/AcmeBundle/Resources/config/serializer/Model.User.yml中
FOS\UserBundle\Model\User:
exclusion_policy: ALL
properties:
id:
expose: true