Symfony2 - 从视图中调用控制器


Symfony2 - call a controller from within a view

我想从其中对控制器进行视图调用。类似于 C#.NET MVC 4.0。

在我看来,我可能有:

  • 页眉
  • 管理员导航
  • 正常导航
  • 页面内容(分为三个部分,内容列表,其他内容列表,主页内容
  • 页脚

所有这些部分都是可重复使用的部分。我很可能总是在我的页面上有一个页眉、普通导航和页脚部分。

我的

控制器执行数据库调用来获取模型并将其泵送到我的视图中。我不想再担心这段代码了,所以我只想从任何视图调用这个控制器的结果: 伪代码:

模板视图:基本.html.php

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><?php $view['slots']->output('title', 'Welcome!') ?></title>
        <?php $view['slots']->output('stylesheets') ?>
        <link rel="shortcut icon" href="<?php echo $view['assets']->getUrl('favicon.ico') ?>" />
    </head>
    <body>
        <?php echo $view['actions']->render(SomethingBundle:Navigation:index); ?> // THIS LINE HERE
        <h1><?php $view['slots']->output('pageTitle') ?></h1>
        <?php $view['slots']->output('_content') ?>
    </body>

所以这是我的模板页面,我希望能够在此页面中包含导航视图,但导航需要一个模型,因此它也取决于导航控制器。

导航控制器

:控制器/导航控制器

class NavigationController extends Controller
    {
        public function indexAction()
        {
            return $this->render(SomethingBundle:Navigation:index.html.php');
        }
    }

导航视图:索引.html.php

<ul>
    <li>Home</li>
    <li>About</li>
</ul>

显然上面的代码不起作用。如何在视图中包含控制器的结果?

我从上面的代码中得到的错误是:

[2/2] NotFoundHttpException: No route found for "GET Navigation:index"  -+  
[1/2] ResourceNotFoundException:   -+ 
<?php echo $view['actions']->render(
    new 'Symfony'Component'HttpKernel'Controller'ControllerReference(
        'YourBundle:NavigationController:index'
    )
) ?>