get Route name in View

谁说我不能喝 提交于 2020-07-06 09:50:30

问题


I trying to design navigation menu, I have 3 Items like this:

  • Dashboard
  • Pages
    • List
    • Add
  • Articles
    • List
    • Add

Now I want to bold Pages when user is in this section,

and if is in Add page I want bold both Pages and Add

my routes.php is :

Route::group(array('prefix' => 'admin', 'before' => 'auth.admin'), function()
{
    Route::any('/', 'App\Controllers\Admin\PagesController@index');
    Route::resource('articles', 'App\Controllers\Admin\ArticlesController');
    Route::resource('pages', 'App\Controllers\Admin\PagesController');
});

I found thid method :

$name = \Route::currentRouteName();
var_dump($name);

But this method return string 'admin.pages.index' (length=17)

Should I use splite to get controller or Laravel have a method for this ?


回答1:


You may use this (to get current action, i.e. HomeController@index)

Route::currentRouteAction();

This will return action like HomeController@index and you can use something like this in your view

<!-- echo the controller name as 'HomeController' -->
{{ dd(substr(Route::currentRouteAction(), 0, (strpos(Route::currentRouteAction(), '@') -1) )) }}

<!-- echo the method name as 'index' -->
{{ dd(substr(Route::currentRouteAction(), (strpos(Route::currentRouteAction(), '@') + 1) )) }}

The Route::currentRouteName() method returns the name of your route that is used as 'as' => 'routename' in your route declaration.




回答2:


In Blade:

<p style="font-weight:{{ (Route::current()->getName() == 'admin.pages.index' && Request::segment(0) == 'add') ? 'bold' : 'normal' }};">Pages</p>



回答3:


Request::segments() will return an array with the current url for example:

yoursite/admin/users/create

will give:

array(2) {
    [0] "admin"
    [1] "users"
    [2] "create"
}


来源:https://stackoverflow.com/questions/21632714/get-route-name-in-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!