1

我正在使用相同的操作来处理一个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);

我怎样才能传递$namemyTemplate.html.twig?我需要的是这样的:

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

1 回答 1

0

好的,我收到了在 FosRestBundle github 页面中打开问题的响应。

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

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()));
}
于 2012-09-17T16:56:17.717 回答