[英]Laravel - read route name, how if had group
我的問題是,如果有例如以下路由組,如何在Laravel FW中讀取當前路由名稱:
Route::group(['prefix' => 'machines'], function(){
// GET
Route::get('/', array('uses' => 'ServerController@index', 'as' => 'machines'));
Route::get('/update/{id}', array('uses' => 'ServerController@update', 'as' => 'machines.Update'));
//POST
Route::post('/updatePost/{id}', array('uses' => 'ServerController@updatePost', 'as' => 'machines.UpdatePost'));
});
通常,我使用以下方法讀取此值: Route::currentRouteName()
但它僅對Route::get('/', ***);
並且不適用於(例如: Route::get('/update/{id}');
其名稱為'machines.Update'。它什么也不返回。
為什么我要這樣做? 我試圖創建“活動菜單”。 現在,我的函數呈現如下:
HTML::macro('nav_link', function ($route, $title, $parameters = array()) {
$class = '';
if(Route::currentRouteName() == $route) {
$class = ' class="active" ';
} else {
$class = '';
}
return '<li' . $class . '>' . link_to_route($route, $title, $parameters = array()) . '</li>';
});
和
{{ HTML::nav_link('dashboard', 'Dashboard', array()); }}
{{ HTML::nav_link('machines', 'Machines', array()); }}
我想創建“動態”宏,該宏將創建<li>
項,並檢查它是否為活動項,然后通過class="active"
將其賦予活動狀態。
解:
在Laravel 4.1中, Route::currentRouteName()
更改為Route::current()->getName()
,現在它像地獄一樣工作:)
對於后代:
HTML::macro('nav_link', function ($route, $title, $parameters = array()) {
$class = '';
if(strpos(Route::current()->getName(), $route) !== false) {
$class = ' class="active" ';
} else {
$class = '';
}
return '<li' . $class . '>' . link_to_route($route, $title, $parameters = array()) . '</li>';
});
用法:
{{ HTML::nav_link('machines', 'Machines', array()); }}
它是“動態活動菜單”的工作代碼。
根據您的評論,使用Request :: is
<li {{ Request::is('portal') ? 'class="active"' : '' }}>
<a href="{{ URL::route('admin.dashboard') }}"><i class="fa fa-dashboard"></i>Dashboard</a>
</li>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.