繁体   English   中英

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

[英]FOSRestBundle: Pass additional variables to the Twig template

我正在使用相同的动作来处理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))
//...

好的,我得到了在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()));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM