2

컨트롤러 레벨에서 FOSRestBundle에서 사용하는 시리얼 라이저에 대한 메타 데이터 디렉토리를 어떻게 지정할 수 있습니까?FOSRESTBundle : 컨트롤러 레벨에서 시리얼 라이저 메타 데이터를 변경하는 방법

내 경우에는 요청 경로에 따라 다르므로 config.yml에 설정할 수 없습니다.

나는 이미 통해 인스턴스 시리얼에 다음 코드

$serializer = JMS\Serializer\SerializerBuilder::create() 
    ->addMetadataDir($someDir) 
    ->build(); 

하지만 어떻게 그것을 적용하는 방법을 사용할 수있는 JMSSerializer doc에서 본 적이

(또는 방법을 대체하는)?

답변

1

나는 이것이 가능하지 않습니다.

build() in SerializerBuilder.php을 호출하면 디렉토리가 메타 데이터 드라이버로 설정됩니다.

Serializer에 의해 사용 된 you can access the metadata factory에도 불구하고 공장이 캐시 디렉토리와 아무 관련이 없으므로 아마도 도움이되지 않습니다. 드라이버 만 디렉터리로 작업합니다.

그래서 유일한 옵션은 Serializer의 새 인스턴스를 만들고 DI 대신 사용하는 유일한 옵션입니다.

편집 : 새롭게 작성하는 Serializer은 질문과 같은 방식으로 작동합니다. 그런 다음 DI 컨테이너는 Container의 인스턴스 여야하며 등록 된 모든 서비스를 무시할 수있는 set() 메서드가 있어야합니다.

+0

답변 해 주셔서 감사합니다. 당신은 내가 * "어떻게 Serializer의 새로운 인스턴스를 만들고 DI 대신에 *를 사용하여 FOSRestBundle을 사용할 수 있습니까? – marcv

+0

답변을 업데이트합니다. – martin

+0

그래, 난 아직도 어떻게 이것을 FOSRestBundle에 적용 할 수 있는지 모르겠지만 어쨌든 당신의 대답을 받아 들일 것입니다. 감사. – marcv