У меня возникла проблема при сериализации экземпляра User
с одним дополнительным полем $name
, которое расширяет базового пользователя из FOSUserBundle:
<?php
namespace AppBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
/**
* User
*/
class User extends BaseUser
{
/**
* @var string
*/
private $name;
/**
* Set name
* @param string $name
* @return User
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
* @return string
*/
public function getName()
{
return $this->name;
}
}
Чтобы упростить, мне нужно открыть только поле $salt
из объекта пользователя, используя JMSSerializerBundle
#AppBundle\Resources\config\serializer\Model.User.yml
FOS\UserBundle\Model\User:
exclusion_policy: all
properties:
salt:
expose: true
Вот конфиг для него:
#app\config\config.yml
jms_serializer:
metadata:
auto_detection: true
directories:
FOSUserBundle:
namespace_prefix: "FOS\\UserBundle"
path: "@AppBundle/Resources/config/serializer"
Проблема в том, что сериализатор также предоставляет поле $name
, которое мне не нужно, так как мне нужно только показать $salt
:
{
"salt": "abcdefg",
"name": "Admin"
}
Я считаю, что мне нужно указать сериализатору использовать конфигурацию для моего AppBundle\Entity\User
вместо базового пользовательского объекта из FOSUserBundle, но я понятия не имею, как это реализовать.