10

Laravelにメニューデータロジックを配置するのに最適な概念的な場所は何ですか. メニューバンドルを使用する場合、どこに配置しますか。Base_Controller追加機能を作成するか、何か違うものを作成しますか?

4

2 に答える 2

26

:この回答は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

于 2013-01-01T04:06:46.870 に答える
0

ビュー コンポーザーでデータをフェッチし、 HTML マクロを使用してHTMLを生成するのはどうですか?

多くの場合、Laravel にはさまざまな方法があります。とはいえ、これはおそらく少し圧倒され、混乱を招く可能性があります。

于 2012-11-24T17:26:45.847 に答える