web-dev-qa-db-fra.com

Comment définir le nom du groupe de routes dans laravel

Est-il possible de définir le nom du groupe de routes dans laravel?

Ce que j'essaie d'accomplir, c'est de savoir que la demande en cours appartient à quel groupe pour pouvoir activer le menu principal et le sous-menu à l'aide de l'action de route en cours:

Code:

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');
});

Code HTML de 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>

Maintenant, ce que je veux, c'est appeler une fonction ou quelque chose qui me donnera le nom du groupe de l'itinéraire actuel.

Exemples:

  1. Si je suis dans l'index ou si je crée une page de guillemets, getCurrentRouteGroup() devrait renvoyer quote
  2. Si je suis sur l'index ou la page de connexion des comptes, getCurrentRouteGroup() devrait renvoyer account
12
user6067756

Cela devrait fonctionner:

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

Regardez ici pour une explication et dans la documentation officielle (sous Groupes de routes et routes nommées).

Mettre à jour

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

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

Alternative de Rohit Khatri

function getCurrentRouteGroup() {
    $routeName = Illuminate\Support\Facades\Route::current()->getName();
    return explode('.',$routeName)[0];
}
11
Alexey Mezenin
// both the format of defining the prefix are working,tested on laravel 5.6

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

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

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

Essaye ça

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

Route::get('connect', [
'as' => 'connect', 'uses' => 'AccountController@connect'
]);

});
0
Sunil