如何在 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

原文由 user6067756 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 513
2 个回答

这应该有效:

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

在此处和 官方文档查找 解释(在 Route Groups & Named Routes 下)。

更新

{{ $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];
}

原文由 Alexey Mezenin 发布,翻译遵循 CC BY-SA 3.0 许可协议

laravel 9 文档 说:name 方法可用于为组中的每个路由名称加上给定字符串的前缀。例如,您可能希望在所有分组路由的名称前加上 admin。给定字符串的前缀与指定的路由名称完全相同,因此我们将确保提供尾随 .前缀中的字符:

 Route::name('admin.')->group(function () {
    Route::get('users', function () {
        // Route assigned name "admin.users"...
    })->name('users');
});

原文由 Ali 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题