Twig渲染控制器在另一个控制器的div中

时间:2016-04-08 12:14:32

标签: twig symfony

我遇到以下用例的问题:我在树枝模板中渲染一个控制器,其中我有一个带有两个链接的导航div。在我的页面中间我有一个div,我想在其中渲染另一个控制器的结果。控制器枝条应该呈现的决定取决于菜单链接上的点击。我希望以下代码清楚地表明我的意思:

{% extends 'base.html.twig' %}
{% block scripts %}
    {{ parent() }}
    <script type="text/javascript">
    $(function() {
        $( "#menu" ).menu();
      });
    </script>
    <style>
        .ui-menu {margin-bottom: 10px !important;}
    </style>
{% endblock %}
{% block stylesheets %}
    {{ parent() }}
    <link href="{{ asset('css/sstm_style.css') }}" rel="stylesheet" />
{% endblock %}

{% block body %}
{{ parent() }}
<div id="module_title"><h1>Lizenznehmer-Stammdaten</h1></div>
<nav>
    <h5>Was möchten Sie tun?</h5>
    <ul id="menu">
        <li><a href="#">Lizenznehmer anlegen</a></li>
        <li><a href="#">Lizenznehmer bearbeiten</a></li>
    </ul>
</nav>
<div id="main">
{# fill div with either CreateLicenseController or ChangeLicenseController #}
</div>
{% endblock %}

我知道embed标签会在另一个控制器的块中呈现控制器,但我不知道如何在运行时告诉twig应该呈现哪个控制器

1 个答案:

答案 0 :(得分:0)

你的意思是通过ajax请求生成控制器?或者您知道渲染时需要哪个控制器? 如果是最后一个,您可以使用if

{% if needCreate %}
{{ render(controller('YourBundle:YourController:CreateLicenseController') }}
{% else %}
{{ render(controller('YourBundle:YourController:ChangeController') }}
{% endif %}

如果你想通过ajax加载它,你应该在javascript中创建它,而不是在twig中。