我正在使用相同的操作来处理html
和json
响应,只是使用.json
为后一条路线添加后缀。
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);
如何将$name
传递给myTemplate.html.twig
?我需要的是:
//...
->setTemplate('MyBundle:MyController:myTemplate.html.twig', array('name' => $name))
//...
答案 0 :(得分:0)
好的,我的回复是issue in FosRestBundle github page。
目前,没有直接的方法,但以下程序将起作用:
1)在路由默认值中分别添加_format
和html
和json
值的选项:
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()));
}