FOSMessageBundle和JMSSerializer不能一起工作

时间:2015-10-01 10:20:37

标签: php symfony jmsserializerbundle

我正在使用Symfony2和一些捆绑包构建一个小型API。我使用FOSMessageBundle在我的应用中发送私信。 我还使用JMSSerializer FOSRestBundle来输出JSON对象。

我想控制我的Message实体的哪些属性被序列化并作为JSON发送。为此,我同时使用了注释和YML配置文件,它适用于我的所有实体甚至我的FOSUserBundle用户模型。但由于某些原因,它对我的​​Message实体不起作用。这是我的代码:

我的映射文件

#/app/serializer/MyVendor/Entity.Message.yml
MyVendor\CoreBundle\Entity\Message:
    exclusion_policy: None
    properties :
        sender :
            expose : false
            exclude : true

使用注释的我的实体

<?php
namespace MyVendor\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use FOS\MessageBundle\Entity\Message as BaseMessage;
use FOS\MessageBundle\Model\ThreadInterface;
use FOS\MessageBundle\Model\ParticipantInterface;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;

/**
 * @ExclusionPolicy("all")
 */
class Message extends BaseMessage
{
        /**
        * @var \FOS\MessageBundle\Model\ParticipantInterface
        * @Exclude
        */
        protected $sender;

由于

1 个答案:

答案 0 :(得分:1)

已解决我忘记在config.yml中指定元数据文件路径

jms_serializer:
   metadata:
      auto_detection: true
      directories:
         FOSMessageBundle:
            namespace_prefix: "FOS\\MessageBundle"
            path: "%kernel.root_dir%/serializer/FOSMessageBundle"