2013-05-27 1 views
0

У меня есть объект CreditCard, который связан с User объекта:Как предотвратить сериализации всех данных соответствующего объекта пользователя

/** 
* CreditCard 
* 
* @ORM\Table(name="credit_card") 
* @ORM\Entity 
*/ 
class CreditCard 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="value", type="string") 
    */ 
    protected $value; 

    /** 
    * @var User 
    * 
    * @ORM\OneToOne(targetEntity="User", mappedBy="creditCard") 
    */ 
    protected $user; 

} 

Когда я сериализацией CreditCard сущности, он также упорядочивает user поля с пользовательскими данными, такими как пароль, и т.д.

{{ creditCard|serialize }} 

дает:

{"id":70,"value":"1721742","user":{"id":1,"username":"1721742","email":"[email protected]","enabled":true,"salt":"xxx","password":"yyy","last_login":"2013-05-27T09:18:30+0200","locked":false, ..... } } 

Как я могу предотвратить его разрешить сериализацию только id, username от User?

+0

Не уверен, что если я получаю ваш вопрос правильно, но вы попробуйте: setIgnoredAttributes - поставляется с нормализатором (http://api.symfony.com/master/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.html). –

ответ

0

Внедрите интерфейс serializable и отключите пользовательский интерфейс в методе serialize().

С помощью этого интерфейса вы написать свой собственный Serialize() и десериализации() методы, которые будут вызываться автоматически, так что вы можете реализовать все, что вы хотите

+0

Можно ли реализовать с этим интерфейсом поведение, которое будет возвращать только «id, username, email», если я сериализую «CreditCard», но если я сериализую непосредственно объект «Пользователь», он вернет весь набор данных? – hsz

Смежные вопросы