2016-10-13 58 views
0

私はいくつかの部分を無効にしたいので、私は、ビュー上の要求を行うと、いくつかのページのために:Laravel(経路の助けを借りて)

@if (\Request::route()->getName() != 'product.show') 

これは動作しますが、私の質問ですが、私は私のスクリプトはもっとflexibileにするために私のルート上に追加のパラメータを設定することができます、のようなもの:

マイ経路コードは次のとおりです。

Route::get('/product/{slug}', ['uses' => '[email protected]', 'NO_SIDEBAR_PARAM' => 'true'], function ($slug) { 
    return [$slug]; 
})->name('product.show'); 

は、だから私は作成したい場合は、「NO_SIDEBAR_PARAM」上の要求要素を有効または無効にするには、「true」または「false」に設定されている場合。

正しいですか?

+0

このロジックを製品コントローラの1つのshowメソッドにのみ適用する場合は、コントローラメソッドがtrue値を持つ 'サイドバー'変数を渡すようにするのが最も簡単です。そして、その変数が真実であることを確認する – tam5

答えて

0

私はほとんどのビューで利用可能にしたいビュー変数を設定するのにmiddlewareを使用します。それもあなたの問題を解決するのに役立つかもしれません。この例では

class SetViewVariables 
{ 
    /** @var SideBarBuilder */ 
    private $builder; 

    public function __construct(SideBarBuilder $builder) 
    { 
     $this->builder = $builder; 
    } 

    public function handle($request, Closure $next) 
    { 
     if ($request->route()->name() == 'product.show') { 
      view()->share('sidebar', ''); 
     } else { 
      view()->share('sidebar', $this->builder->makeSideBar()); 
     } 
    } 
} 

SideBarBuilderは、サイドバーを生成し、独自のクラスです。私はちょうどそのような単純なクラスを解決するためにLaravelsコンテナを使用するのが好きです。

関連する問題