2014-04-19 2 views
1

저는 제가 개발중인 json API에 공개하고자하는 Entity를 가지고 있습니다. 문제는이 특정 컨트롤러에서, 제가 가지고 있지 않은 필드가 하나 밖에 없다는 것입니다. 폭로하고 싶지 않아. 컨트롤러 내에서 직렬화를 제외시키는 방법이 있습니까?JMS Serializer는 Symfony2 컨트롤러에서 엔티티 필드를 제외합니다.

필자는 엔티티에 주석을 달아서 시리얼 라이저가 해당 필드를 통과 할 수 있음을 알고 있지만 다른 모든 경우에는 어떤 일이 발생합니까? 이것은 실제로 예외입니다.

답변

4

각 속성을 그룹에 할당 한 다음 컨트롤러에서 을 직렬화 할 때 해당 그룹을 컨텍스트에 정의 할 수 있습니다.

귀하의 엔티티 : 컨트롤러이 예에서

use JMS\Serializer\SerializationContext; 

$serializer->serialize(
    new Comment(), 
    'json', 
    SerializationContext::create()->setGroups(array('secondary')) 
); 

에서 다음

use JMS\Serializer\Annotations as Serializer; 

class Comment 
{ 
    /** @Serializer\Groups({"main", "secondary"}) */ 
    private $id; 

    /** @Serializer\Groups({"main", "secondary"}) */ 
    private $title; 

    /** @Serializer\Groups({"main", "secondary"}) */ 
    private $name; 

    /** @Serializer\Groups({"main"}) */ 
    private $email; 

    /** @Serializer\Groups({"main", "secondary"}) */ 
    private $message; 
} 

은 이메일 필드 만 secondary라는 이름의 그룹, 직렬화 된 데이터에서 제외됩니다. 물론이 그룹을 원하는대로 부를 수 있습니다.

관련 문제