2016-04-25 2 views
5

Есть ли способ определить имя группы маршрутов в laravel?Как определить имя группы маршрутов в laravel

То, что я пытаюсь достичь, это знать, что текущий запрос принадлежит к какой группе, так что я могу сделать активным в главном меню и подменю текущим действием по маршруту:

Код:

Route::group(['prefix'=>'accounts','as'=>'account.'], function(){ 
    Route::get('/', '[email protected]')->name('index'); 
    Route::get('connect', '[email protected]')->name('connect'); 
}); 

Route::group(['prefix'=>'quotes','as'=>'quote.'], function(){ 
    Route::get('/', '[email protected]')->name('index'); 
    Route::get('connect', '[email protected]')->name('create'); 
}); 

навигации HTML код

<ul> 
    <li> // Add class 'active' when any route is open from account route group 
     <a href="{{route('account.index')}}">Accounts</a> 
     <ul> 
      <li> // Add class 'active' when connect sub menu is clicked 
       <a href="{{route('account.connect')}}">Connect Account</a> 
      </li> 
     </ul> 
    </li> 
    <li> // Add class 'active' when any route is open from quote route group 
     <a href="{{route('quote.index')}}">Quotes</a> 
     <ul> 
      <li> // Add class 'active' when create sub menu is clicked 
       <a href="{{route('quote.create')}}">Create Quote</a> 
      </li> 
     </ul> 
    </li> 
</ul> 

Теперь то, что я хочу, чтобы вызвать функцию или что-то, который даст мне имя группы текущего маршрута.

Примеры:

  1. Если я по индексу или создать страницу котировок getCurrentRouteGroup() должны вернуть quote
  2. Если я по индексу или подключить страницу счетов getCurrentRouteGroup() должен возвращать account

ответ

3

Должно работать:

Route::group(['prefix'=>'accounts','as'=>'account.'], function(){ 
    Route::get('/', ['as' => 'index', 'uses' => '[email protected]']); 
    Route::get('connect', ['as' => 'connect', 'uses' = > '[email protected]']); 
}); 

Look here для объяснения и в official documentation (под Группы маршрутов & Именованные маршруты).

Update

{{ $routeName = \Request::route()->getName() }} 

@if(strpos($routeName, 'account.') === 0) 
    // do something 
@endif 

Альтернатива от Рохит Khatri

function getCurrentRouteGroup() { 
    $routeName = Illuminate\Support\Facades\Route::current()->getName(); 
    return explode('.',$routeName)[0]; 
} 
+0

Я хочу, чтобы получить имя текущего маршрута группы на представлении. –

+0

Просто используйте тот же '{{route ('account.index')}}' –

+1

Это дает мне URL маршрута, я не хочу URL. Я хочу вызвать функцию 'getCurrentRouteGroup()', и это даст мне имя группы маршрутов. Например, если я подключаюсь или индексирую страницу учетных записей, то 'getCurrentRouteGroup()' будет возвращать 'account'. –

0

Попробуйте

Route::group(['prefix'=>'accounts','as'=>'account.'], function(){ 

Route::get('connect', [ 
'as' => 'connect', 'uses' => '[email protected]' 
]); 

}); 
+0

То, что у меня есть, отлично работает, но я хочу знать, в какой группе принадлежит эта просьба. –