沃梦达 / 编程问答 / php问题 / 正文

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

How to define route group name in laravel(如何在 laravel 中定义路由组名称)

本文介绍了如何在 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];
}

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

本文标题为:如何在 laravel 中定义路由组名称