у меня есть проблема, когда сериализации User
экземпляр с одним дополнительным полем $name
, который расширяет базу пользователей FOSUserBundle:FOSUserBundle + JMSSerializerBundle + выставляя дополнительные поля
<?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"
}
Я считаю, что нужно сказать сериалайзер использовать config для моего AppBundle\Entity\User
вместо базового пользовательского объекта из FOSUserBundle, но я не знаю, как его реализовать.
Дэн, спасибо за ответ. Дело в том, что мой объект 'User' хранится в' src/AppBundle/Entity/User/User.php', и независимо от того, где я помещаю свой файл 'yml' (' src/AppBundle/Resources/config/serializer/Entity.User.yml' или 'src/AppBundle/Resources/config/serializer/Entity.User.User. yml'), он не работает, он раскрывает все поля, похоже, что сериализатор не может найти эту конфигурацию yml. –
Что такое пространство имен в файле yml? это должно быть так: 'AppBundle \ Entity \ User \ User:' – DanR
Вот мой 'SRC/AppBundle/Ресурсы/конфигурации/сериализатору/Entity.User.User.yml' AppBundle \ Entity \ User \ User: исключение_политика: все Свойства: соль: выставить: true –