在视图中获取路径名称

Maj*_*Afy 3 php controller view laravel

我尝试设计导航菜单,我有3个像这样的项目:

  • 仪表板
  • 网页
    • 名单
  • 用品
    • 名单

现在我想Pages在用户进入本节时加粗

如果在Add页面我想要大胆PagesAdd

routes.php是:

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');
});
Run Code Online (Sandbox Code Playgroud)

我找到了这个方法:

$name = \Route::currentRouteName();
var_dump($name);
Run Code Online (Sandbox Code Playgroud)

但这种方法回归 string 'admin.pages.index' (length=17)

我应该使用splite控制器或Laravel有一个方法吗?

mar*_*nuy 8

在刀片中:

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


小智 6

Request::segments() 将返回一个包含当前url的数组,例如:

yoursite/admin/users/create
Run Code Online (Sandbox Code Playgroud)

会给:

array(2) {
    [0] "admin"
    [1] "users"
    [2] "create"
}
Run Code Online (Sandbox Code Playgroud)


The*_*pha 6

您可以使用它(获取当前操作,即HomeController@index

Route::currentRouteAction();
Run Code Online (Sandbox Code Playgroud)

这将返回action喜欢HomeController@index,你可以使用这样的事情在你看来

<!-- 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) )) }}
Run Code Online (Sandbox Code Playgroud)

Route::currentRouteName()方法返回'as' => 'routename'在路由声明中使用的路由名称。