[英]FOSRestBundle setup for return JSON but still asking for Twig template
[英]FOSRestBundle: Pass additional variables to the Twig template
我正在使用相同的動作來處理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))
//...
好的,我得到了在FosRestBundle github page中打開問題的響應。
目前,還沒有直接的方法,但是可以執行以下過程:
1)在路由默認值中分別添加html
和json
值的_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.