非常感谢这里的答案,但他们并没有真正帮助我。下一次,我尝试添加更多代码示例;)
我的目标是从行动渲染成模板,但使用不同的参数和渲染这些不同的内容在父视图中的谐音。
实例:假设一个名为“view.html.twig”,包括模板2倍“myPartial.html.twig”模板,但第一次与PARAM和第二时间而不PARAM。基于这个参数,应该返回不同的内容。
我的问题是现在,为什么显然只有第一个动作在Symfony的呈现为我的两个部分观点有相同的内容。
原来这就是我现在做的事:
1控制器,2个动作,都调用了同一个动作3获取数据和值返回给调用动作。然后这两个动作都使用从第三个动作渲染的值调用渲染方法。
这就是它现在看起来:
<div class="tab-content clearfix">
<div class="tab-pane" id="1b">
{% render controller('MyBundle:MyController:list1') %}
</div>
<div class="tab-pane" id="2b">
{% render controller('MyBundle:MyController:list2', {'type' : 1}) %}
</div>
但我想实现是做这样的事情(没有工作,因为那时两个标签会显示同样的内容):
<div class="tab-content clearfix">
<div class="tab-pane" id="1b">
{% render controller('MyBundle:MyController:list') %}
</div>
<div class="tab-pane" id="2b">
{% render controller('MyBundle:MyController:list', {'type' : 1}) %}
</div>
,我觉得困惑,因为在这两个时代 “渲染” 我被调用,所以我希望控制器在两个时间都被调用,因此控制器中的局部视图也被渲染两次。但显然这并非如此:(控制器本身看起来是这样的:
public function list1Action()
{
$twigVars = //do something to build the twig vars without param;
return $this->render('@MyBundle/Test/partial_list.html.twig', array(
'vars' => $twigVars,
));
}
public function list2Action($param)
{
$twigVars = //do something to build the twig vars with param;
return $this->render('@MyBundle/Test/partial_list.html.twig', array(
'vars' => $twigVars,
));
}
而我想要的是这样的:
public function listAction($param = '')
{
if ($param) {
$twigVars = //do something to return the twig vars with param;
} else {
$twigVars = //do something else to return twig vars without param;
}
return $this->render('@MyBundle/Test/partial_list.html.twig', array(
'vars' => $twigVars,
));
}
来源
2017-02-19 15:06:18
Eve
请更新与相关的代码问题(控制器/ views) – DarkBee
答案之一是否回答你的问题? –