Laravelでルートグループ名を定義する方法 質問する

Laravelでルートグループ名を定義する方法 質問する

Laravel でルート グループの名前を定義する方法はありますか?

私がこれによって実現しようとしているのは、現在のリクエストがどのグループに属しているかを把握し、現在のルート アクションによってメイン メニューとサブ メニューをアクティブにできるようにすることです。

コード:

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

Route::group(['prefix'=>'quotes','as'=>'quote.'], function(){
    Route::get('/', 'QuoteController@index')->name('index');
    Route::get('connect', 'QuoteController@create')->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

ベストアンサー1

これは動作するはずです:

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

ここを見て説明のために、そして公式文書(下ルートグループと名前付きルート)。

アップデート

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

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

Rohit Khatri からの代替案

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

おすすめ記事