wake-up-neo.net

So definieren Sie den Namen der Routengruppe in Laravel

Gibt es eine Möglichkeit, den Namen der Routengruppe in Laravel zu definieren?

Was ich damit erreichen möchte, ist zu wissen, dass die aktuelle Anforderung zu welcher Gruppe gehört, sodass ich das Hauptmenü und das Untermenü durch die aktuelle Routenaktion aktivieren kann:

Code:

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-Code für die Navigation

<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>

Nun möchte ich eine Funktion oder etwas aufrufen, das mir den Gruppennamen der aktuellen Route gibt.

Beispiele:

  1. Wenn ich im Index bin oder eine Seite mit Anführungszeichen erstellen, sollte getCurrentRouteGroup()quote zurückgeben.
  2. Wenn ich auf der Index- oder Verbindungsseite der Konten bin, sollte getCurrentRouteGroup()account zurückgegeben werden.
12
user6067756

Das sollte funktionieren:

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

Siehe hier für eine Erklärung und in der offiziellen Dokumentation (unter Routengruppen und benannte Routen).

Update

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

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

Alternative von Rohit Khatri

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

Es sollte funktionieren-

innen klingen-

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

// Find the first occurrence of account in URL-

@if(strpos($routeName, 'account.') === 0)
  console the message or your code
@endif
0
Arun Joshi
// both the format of defining the prefix are working,tested on laravel 5.6

Route::group(['prefix'=>'accounts','as'=>'account.'], function() {
    Route::get('/', '[email protected]')->name('test');
    Route::get('/new', function(){
            return redirect()->route('account.test');
    });
});

Route::group(['prefix' => 'admin', 'as' => 'admin.'], function () {
    Route::get('/', [
        'as' => 'custom',
        'uses' => '[email protected]'
    ]);  

    Route::get('/custom', function(){
        return route('admin.custom');
    });
}); 
0

Versuche dies

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

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

});
0
Sunil