如何在 laravel 中定义路由组名称

2022-01-08 00:00:00 routes php laravel

有什么方法可以在 laravel 中定义路由组的名称吗?

Is there any way to define the name of route group in laravel?

我试图通过这个来完成的是知道当前请求属于哪个组,这样我就可以通过当前路由操作激活主菜单和子菜单:

What I'm trying to accomplish by this is to know that the current request belongs to which group so I can make active the main menu and sub menu by the current route action:

代码:

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>

现在我想要的是调用一个函数或其他东西,它会给我当前路由的组​​名.

Now what I want is to call a function or something which will give me the current route's group name.

例子:

  1. 如果我在索引或创建报价页面 getCurrentRouteGroup() 应该返回 quote
  2. 如果我在帐户的索引或连接页面上,getCurrentRouteGroup() 应该返回 account
  1. If I'm on index or create page of quotes getCurrentRouteGroup() should return quote
  2. If I'm on index or connect page of accounts getCurrentRouteGroup() should return account

推荐答案

这应该可行:

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

看这里以获得解释并在 官方文档(在路由组和命名路由下).

Look here for an explanation and in the official documentation (under Route Groups & Named Routes).

更新

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

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

Rohit Khatri 的替代品

function getCurrentRouteGroup() {
    $routeName = IlluminateSupportFacadesRoute::current()->getName();
    return explode('.',$routeName)[0];
}

相关文章