如何在Laravel中定义路由组名称 [英] How to define route group name in laravel

查看:182
本文介绍了如何在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 = Illuminate\Support\Facades\Route::current()->getName();
    return explode('.',$routeName)[0];
}

这篇关于如何在Laravel中定义路由组名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆