在父亲模板中获取子参考

时间:2018-04-17 14:55:08

标签: symfony twig

我正在使用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就会变得不同了

1 个答案:

答案 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());
}