如何从视图加载视图


How to load a view from a view?

我曾经使用过CodeIgniter。现在我开始学习Symfony2。我只是想知道,在CodeIgniter中,我可以从另一个视图加载视图。就像,我可以从索引.php加载菜单.php。我以前是这样做的——

//in index.php
<?php $this->load->view('menu.php'); ?>

是否可以在Symfony2和Twig中做同样的事情?

几种不同的方法可以做到这一点,具体取决于您要完成的任务。

如果要渲染控制器的响应,可以在树枝模板中执行此操作。

{{ render(controller('AcmeArticleBundle:Article:recentArticles', {
        'max': 3
})) }}

在上面的示例中,传递max参数将作为参数传递给控制器。 然后,控制器将负责返回一个响应,该响应将插入到调用它的视图中。

您还可以使用 include 仅将树枝模板呈现为嵌入式视图:

{% for article in articles %}
    {{ include(
        'AcmeArticleBundle:Article:articleDetails.html.twig',
        { 'article': article }
    ) }}
{% endfor %}

在上面的示例中,article 将传递到 twig 模板的上下文中articleDetails.html.twig但不会传递到任何控制器。 因此,此方法非常适合在许多地方使用的重复前端代码,例如表、列表、侧边栏等的模板。

http://symfony.com/doc/current/book/templating.html#including-other-templateshttp://twig.sensiolabs.org/doc/functions/include.html