问题
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