首页 文章

如何使用Symfony 4目录结构在模板中嵌入控制器

提问于
浏览
2

我使用Symfony Flex进行了新的Symfony安装,新的骨架属于下一个Symfony 4目录结构 . 接下来,我将从树枝模板中嵌入一个控制器 .

我试过这样做:

<div id="sidebar">
    {{ render(controller(
        'App:Article:recentArticles',
        { 'max': 3 }
    )) }}
</div>

与如何将请求转发给另一个控制器相同,我尝试过:

$response = $this->forward('App:Something:fancy', array(
    'name'  => $name,
    'color' => 'green',
));

但是没有用 .

有办法做到这一点?

3 回答

  • 0

    当我们使用简短约定 a:b:c 来引用控制器时,它仅在控制器属于已安装的包时才起作用 . 对于Symfony 4结构,默认情况下您的应用程序源不是捆绑包,因此上述操作不起作用 .

    对于Symfony 4方法,您可以使用其完全限定的类名称和方法来引用此控制器:

    App\Controller\ArticleController::recentArticlesAction
    

    将控制器嵌入到Twig模板中:

    {{ render(controller('App\\Controller\\ArticleController::recentArticlesAction')) }}
    
  • 0

    您必须将 Bundle 添加到 App

    <div id="sidebar">
        {{ render(controller(
            'AppBundle:Article:recentArticles',
            { 'max': 3 }
        )) }}
    </div>
    

    你可以阅读有关嵌入Controller in a Template (Twig)的内容

  • 2

    这是执行此操作的正确方法:

    {# templates/base.html.twig #}
    
    {# ... #}
    <div id="sidebar">
        {{ render(controller(
            'App\\Controller\\ArticleController::recentArticles',
            { 'max': 3 }
        )) }}
    </div>
    

    资料来源:https://symfony.com/doc/master/templating/embedding_controllers.html

相关问题