Laravelにメニューデータロジックを配置するのに最適な概念的な場所は何ですか. メニューバンドルを使用する場合、どこに配置しますか。Base_Controller
追加機能を作成するか、何か違うものを作成しますか?
2 に答える
注:この回答はLaravel 3向けに書かれたもので、最新のLaravel 4では機能する場合と機能しない場合があります
動的メニューを作成する私のお気に入りの方法は、メニュー パーツをメイン レイアウトから分離し、Laravel の Composer を介してメニュー データを挿入することです (Composer PHP パッケージ マネージャーと混同しないでください。これらは別のものです)。
<!-- layouts/default.blade.php -->
<div id="header">Title</div>
<div id="menu">
@render('parts.menu')
</div>
<div id="content"></div>
<div id="footer"></div>
<!-- parts/menu.blade.php -->
<ul>
@foreach($menuitems as $menuitem)
<li>{{ $menuitem->title }}</li>
@endforeach
</ul>
最後に、composer を介して変数を注入できます。
<?php
// application/routes.php
View::composer('parts.menu', function($view){
$view->with('menuitems', Menu::all());
});
このように毎回parts/menu.blade.php
呼び出されると、Composer はビューをインターセプトし、$menuitems
変数を挿入します。with
を使用するのと同じです。return View::make('blahblah')->with( 'menuitems', Menu::all() )
それが役に立てば幸い :)
編集:ロジックを入れたくない場合は、ロジックをroutes.php
入れて、start.php
ジェイソン・ルイスのstart.php
別のファイルに分割する方法を検討してください。
application
呼び出されたディレクトリを作成し、start
いくつかのファイルで埋めます。
+ application [DIR]
\-> + start [DIR]
|-> autoloading.php
|-> composers.php
|-> filters.php
\-> validation.php
次に、これらのコード行をapplication/start.php
require __DIR__ . DS . 'start' . DS . 'autoloading.php';
require __DIR__ . DS . 'start' . DS . 'filters.php';
require __DIR__ . DS . 'start' . DS . 'composers.php';
require __DIR__ . DS . 'start' . DS . 'validation.php';
あなたはアイデアを得ました。composer 関数を composers.php に配置します。
ここで記事全体を読む: http://jasonlewis.me/article/laravel-keeping-things-organized
ビュー コンポーザーでデータをフェッチし、 HTML マクロを使用してHTMLを生成するのはどうですか?
多くの場合、Laravel にはさまざまな方法があります。とはいえ、これはおそらく少し圧倒され、混乱を招く可能性があります。