FOSRestBundle:将其他变量传递给Twig模板

时间:2012-09-17 10:46:23

标签: php rest symfony fosrestbundle

我正在使用相同的操作来处理htmljson响应,只是使用.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))
//...

1 个答案:

答案 0 :(得分:0)

好的,我的回复是issue in FosRestBundle github page

目前,没有直接的方法,但以下程序将起作用:

1)在路由默认值中分别添加_formathtmljson值的选项:

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()));
}