我正在使用symfony和twig,我尝试做类似的事情
我有一个名为father.html.twig
的第一个树枝模板
在这个父亲我有一个div和一个按钮
<div class="container">
</div>
<button class="button>I AM A BUTTON</button>
在我的剧本中我有类似的东西:
<script>
$.('button').on('click,function(){
$ajax({
url : 'url'
type: 'POST'
data: 'data'
}).done(function(data){
$('.container').html(data).show();
})
})
<script>
到目前为止一切顺利。所以我的控制器渲染了另一个树枝:
return $this->render('son.html.twig', array(
"data1" => "data1",
"data2"=>'I eat apple'
));
所以在son.html.twig中发生了很多无关紧要的事情,但我想知道,如何在我的father.html.twig中访问data2
并执行类似的操作
<div class="container">
here we have son.html.twig
</div>
<button class="button>I AM A BUTTON</button>
<p> {{ data2 }} </p>
并且&#34;我吃苹果&#34;显示。每当我点击I am a button
时,数据2就会变得不同了
答案 0 :(得分:0)
您可以在父模板的任何位置渲染另一个控制器:
<div class="container">
{{ render(controller('AcmeBundle:Default:son')) }}
</div>
<button class="button>I AM A BUTTON</button>
<p> {{ data2 }} </p>
其中AcmeBundle:Default:son
是AcmeBundle \ DefaultController :: sonAction()的快捷方式
https://symfony.com/doc/3.4/templating/embedding_controllers.html
P.S。
当然,你必须有单独的动作来渲染你的父模板:
fatherAction()
{
return $this->render('father.html.twig', array());
}