我只得到一个JSON结果,所有内容都来自FOSUser\User +来自我的CaseWorker公开的ID,但仅此而已!结果如下: {“电子邮件”:"tester@COM.de",“已启用”:true,"id":1} 它应该是这样的: {“电子邮件”:"tester@COM.de",“首名”:"Egon",“姓氏”:"Olsen","enabled":true,"id":1} 我做错什么了?
我的全局配置有以下JMS和FOS条目:
#config.yml
...
fos_user:
db_driver: orm
firewall_name: default
user_class: COMP\CalcBundle\Entity\CaseWorker
jms_serializer:
metadata:
auto_detection: true
directories:
FOSUserBundle:
path: "@COMPCalcBundle/Resources/config/serializer/FOS"
namespace_prefix: FOS\UserBundle
parameters:
jms_serializer.serialized_name_annotation_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy用于隐藏FOS\User属性的YML如下所示:
# src\COMP\CalcBundle\Resources\config\serializer\FOS\Entity.User.yml
FOS\UserBundle\Model\User:
exclusion_policy: ALL
properties:
email:
expose: true
enabled:
expose: true我的案例工作者实体如下所示:
# src\COMP\CalcBundle\Entity\CaseWorker.php
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
use JMS\Serializer\Annotation as JMS;
/**
* CaseWorker
*
* @ORM\Table(name="caseWorker", options={"collate"="utf8_general_ci"})
* @ORM\Entity
* @JMS\ExclusionPolicy("all")
*/
class CaseWorker extends BaseUser
{
/**
* @var integer
*
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue
* @JMS\Expose
*/
protected $id;
/**
* @var string
*
* @ORM\Column(type="string", length=80, nullable=true)
* @JMS\Expose
*/
private $firstname;
/**
* @var string
*
* @ORM\Column(type="string", length=80, nullable=true)
* @JMS\Expose
*/
private $surname;
/**
* @ORM\OneToMany(targetEntity="Event", mappedBy="caseworker")
**/
private $events;
...发布于 2015-09-25 08:53:22
找到了!
问题是,序列化程序只序列化非空字段!因此,在我的例子中,实体没有名字和姓氏设置!
我希望这能帮到别人!
https://stackoverflow.com/questions/32625865
复制相似问题