その中からコントローラーにビュー呼び出しをしたい。C#.NET MVC 4.0 に似ています。
私の見解では、私は持っているかもしれません:
- ヘッダ
- 管理ナビゲーション
- 通常のナビゲーション
- ページ コンテンツ (3 つの部分に分かれている、何かのリスト、何か他のもののリスト、メイン ページのコンテンツ
- フッター
これらのパーツはすべて再利用可能なセクションです。ほとんどの場合、ページのヘッダー、通常のナビゲーション、およびフッターの部分を常に持つことになります。
私のコントローラーはデータベース呼び出しを行ってモデルを取得し、それをビューに送ります。このコードについて二度と心配する必要はないので、このコントローラーの結果を任意のビューから呼び出したいだけです: 疑似コード:
テンプレート ビュー: 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>
これは私のテンプレート ページで、このページにナビゲーション ビューを含めることができると期待していますが、ナビゲーションにはモデルが必要なため、ナビゲーション コントローラーにも依存します。
ナビゲーション コントローラ: Controller/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: -+