在视图中获取路径名称

时间:2014-02-07 16:19:15

标签: php view controller 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');
});

我发现了这个方法:

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

但是此方法返回string 'admin.pages.index' (length=17)

我应该使用splite来获取控制器吗?或者Laravel有这个方法吗?

3 个答案:

答案 0 :(得分:7)

在刀锋中:

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

答案 1 :(得分:6)

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

yoursite/admin/users/create

会给:

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

答案 2 :(得分:4)

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

Route::currentRouteAction();

这将返回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) )) }}

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