我想对其中的控制器进行视图调用。类似于C#.NET MVC 4.0。Symfony2 - 从视图内调用控制器
在我看来,我可能有:
- 头
- 联系导航
- 正常航行
- 页内容(分为三个部分,东西名单,别的东西名单,主页content
- 页脚
全部这些部分是可重复使用的部分。我最有可能会始终拥有页面的标题,常规导航和页脚部分。
我的控制器执行数据库调用来获取模型并将其泵入我的视图。 我不想曾经有再担心这个代码,所以我只是想从任何视图该控制器的结果是:伪代码:
模板观点:base.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>
所以这是我的模板页面,我希望能够在此页面中包含导航视图,但导航需要一个模型,因此它也取决于导航控制器。
导航控制器:控制器/ NavigationController
class NavigationController extends Controller
{
public function indexAction()
{
return $this->render(SomethingBundle:Navigation:index.html.php');
}
}
导航视图:index.html.php
<ul>
<li>Home</li>
<li>About</li>
</ul>
显然上面的代码不起作用。如何在视图中包含控制器的结果?
我从上面的代码得到的错误是:
[2/2] NotFoundHttpException: No route found for "GET Navigation:index" -+
[1/2] ResourceNotFoundException: -+
人数人数人数这完全* *违背了MVC的约定。如果你想让你的菜单由控制器呈现,那么请使用助手来代替;不要尝试从视图中调用控制器。 –
为什么这是一个帮手?如果我有一个只显示导航的导航页面...那么我想要使用完全相同的导航片段的页面......这里完全不需要单独的概念。我是Ror和c#.net MVC 4.0的忠实粉丝,这就是他们的运作方式。这很简单,完全合理。然而,如果你想用你的选择回答,我会很高兴看到你如何分类! – Jimmyt1988