2016-05-26 5 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 просто поставьте «статьи». Это может сработать. –

    ответ

    0

    это работало для меня:

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

    Вы можете использовать https://github.com/letrunghieu/active Это вспомогательный класс для Laravel 4/5 приложений, чтобы получить активный класс базы на текущем маршруте.

    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>