2016-05-26 15 views
0

私は次のコードを持っています。Laravel - ナビゲーションバーでアクティブに設定

マイsetActive()機能:

function setActive($path, $nav = 'class=active') 
{ 
    return Request::fullUrl() === $path ? $nav : ''; 
} 

そして、どのように私はそれを呼び出す:

<li {{ setActive(route('home')) }}> 
    <a href="{{ route('mod.banned.index') }}"> 
     Home 
    </a> 
</li> 

だから、毎回ページがホームページで、それがアクティブとして設定されます。

ただし、動作させたい場合は、サブページでは機能しません。たとえば、私が/articles/article-1/articles/article-2を持っていて、どんな記事であっても記事タブがアクティブであるとマークされるようにしたいなら、

setActive(route('articles.index') . '/*') 
// 'articles.index' route = /articles/ 
// Should be active if -> /anything/after/the/slash/ 

が、私はそれが理にかなって願っています:

は、私のような何かをしたいです。

これを行うにはどうすればよいですか?

ありがとうございました。

+0

どうやってですか?

  • Articles
  • 私が言いたいのは、詳細なリンクは「記事/ ../..」などのようなものです。しかし、setActive関数の場合は、 'articles'を指定してください。それは動作する可能性があります。 –

    答えて

    0

    これは私の仕事:

    function setActive($path, $nav = 'class=active') 
    { 
        return preg_match("/".preg_quote($path, '/')."\S*/", Request::fullUrl()) ? $nav : ''; 
    } 
    
    0

    をあなたはそれが現在のルート上のアクティブなクラスベースを取得するにはLaravel 4/5アプリケーションのためのヘルパークラスであるhttps://github.com/letrunghieu/active を使用することができます。

    0

    私はビューにグローバル変数を追加し、ブレードビューでどこでも

    class AppServiceProvider extends ServiceProvider 
    { 
        /** 
        * Bootstrap any application services. 
        * 
        * @return void 
        */ 
        public function boot() 
        { 
         view()->composer('*', function ($view) { 
          $view->with('active_route', \Route::currentRouteName()); 
         }); 
        } 
    } 
    

    それを使用するような何かをするだろう。はるかに簡単です。助けてくれるかもしれません;)

    <ul> 
        <li class="{{ $active_route == "home" && "active" }}"> Home </li> 
    </ul> 
    
    関連する問題