ControllerTrait::json
기능은 symfony/serializer
이 아니고 jms/serializer
이 아닙니다.
JMS 직렬화 기는 복잡한 직렬화/직렬화 해제를 실행하는 수단을 제공하지만 Symfony의 직렬화기에는 이러한 기능의 하위 집합 만 있습니다.
Symfony\Component\Serializer\Annotation\Groups
대신 : 당신은 아마 확인하여 사용하기 위해선,이 JMS의 시리얼없이 도망 할 수
JMS\Serializer\Annotation\Groups
예
class User
{
/**
* @Groups({"simple", "super_simple"})
*/
private $id;
/**
* @Groups({"full"})
*/
private $username;
/**
* @Groups({"full"})
*/
private $token;
/**
* @var Role
*/
private $role;
}
class Role{
/**
* @Groups({"simple"})
*/
private $id;
/**
* @Groups({"full"})
*/
private $description;
}
을 그리고 당신은 할 수 해야 할 일 :
$role = new Role(1, "Some role");
$user = new User(1, "foo", "bar", $role);
// Returns ids of both User and Role
$ids = $this->json($user, Response::HTTP_CREATED, [], ['groups' => ['simple']]);
// Returns id of User entity only (note the different group)
$ids = $this->json($user, Response::HTTP_CREATED, [], ['groups' => ['super_simple']]);
그냥 직렬화 주석이 활성화되어 있는지 확인하십시오 (framework
). serializer
. enable_annotations
: true
당신의 config.yml
)
에이의 문서를 참조하십시오 :
https://symfony.com/doc/current/serializer.html#using-serialization-groups-annotations
희망이 조금 도움이 ...
좋아,하지만 여전히, 내가 심포니를 사용할 경우/시리얼 방법 전체 사용자가 아닌 사용자 엔터티의 ID 만 추출 할 수 있습니까? 나는 다음과 같은 것을 시도했다 : [ 'groups'=> [ 'user']. [ 'id']] 분명히 그것의 작동하지 않는다 .. – IleNea
위의 업데이트를 보아라. –
글쎄, 나는 당신의 접근법을 이해하지만, [ 'groups'] => [ 'consumer'] 주석이 달린 다른 클래스의 필드는 어떻게 표시 할 수 있습니까? 그게 내가 성취하려고 시도한 것입니다. – IleNea