簡體   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