我遇到以下用例的问题:我在树枝模板中渲染一个控制器,其中我有一个带有两个链接的导航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应该呈现哪个控制器
答案 0 :(得分:0)
你的意思是通过ajax请求生成控制器?或者您知道渲染时需要哪个控制器?
如果是最后一个,您可以使用if
:
{% if needCreate %}
{{ render(controller('YourBundle:YourController:CreateLicenseController') }}
{% else %}
{{ render(controller('YourBundle:YourController:ChangeController') }}
{% endif %}
如果你想通过ajax加载它,你应该在javascript中创建它,而不是在twig中。