2012-09-17 6 views
1

htmljson 응답을 처리하는 데 동일한 작업을 사용합니다. 그 중 하나의 경로 뒤에 .json으로 끝나기 만합니다.FOSRestBundle : 추가 변수를 Twig 템플릿에 전달합니다.

json은 아무런 문제없이 작동하지만 응답이 html 인 경우 Twig 템플릿에 추가 변수를 전달해야하며 잘 모르고 어떻게 해야할지 모릅니다. 순간, 내 코드는 다음과 같습니다

// $entity = get my data; 

$name = 'foo'; 

$view = $this->view($entity, 200) 
    ->setTemplate('MyBundle:MyController:myTemplate.html.twig') 
    ->setTemplateVar('entity') 
    ; 

return $this->handleView($view); 

어떻게 통과 할 수 $namemyTemplate.html.twig에? 내가 원하는 것은 다음과 같습니다 :

//... 
->setTemplate('MyBundle:MyController:myTemplate.html.twig', array('name' => $name)) 
//... 

답변

0

좋아요, 나는 issue in FosRestBundle github page을 여는 응답을 받았습니다. 순간

는 더 간단한 방법이 없지만, 다음 절차에 따라 작동합니다 :

1) 경로 기본값에 각각 htmljson 값으로 _format 옵션을 추가

defaults: { _controller: myBundle:myController:myAction, _format: html } #or json 

2) 액션 서명의 첫 번째 매개 변수로 $_format을 추가하십시오.

public function myActionAction($_format, $any_other_paramer) 

3) 조건 적으로 더 많은 변수를 Twig 템플릿에 추가하십시오 :

if ($this->get('fos_rest.view_handler')->isFormatTemplating($_format)) { 
    $view->setData(array('name' => $name, 'entity' => $view->getData())); 
} 
관련 문제