Ozz*_*zzy 9 php routing laravel laravel-5
我目前正在使用我的应用程序URL生成{{action('Namespace\Class@method')}}.如何检查当前页面请求是否映射到当前操作Namespace\Class@method?
我想做的事情如下:
<a href="{{action('Namespace\Class@method')}}
@if (currentAction('Namespace\Class@method'))
class="active"
@endif
>Some link</a>
Run Code Online (Sandbox Code Playgroud)
我将如何在Laravel 5中实现这一目标?
没有内置方法,但您可以使用检索当前操作名称Route::currentRouteAction().不幸的是,此方法将返回完全命名空间的类名.所以你会得到类似的东西:
App\Http\Controllers\FooBarController@method
Run Code Online (Sandbox Code Playgroud)
您可以检查或使用类似的东西,ends_with这样您就不必指定完整路径:
@if(ends_with(Route::currentRouteAction(), 'FooBarController@method'))
Run Code Online (Sandbox Code Playgroud)
您也可以考虑使用命名路由'as' => 'route.name'.这将允许您使用:Route::is('route.name')
小智 7
Actualy我把它简化为以下代码:
<li class="@if(Route::is('getLogin')) active @endif"><a href="{{URL::route('getLogin')}}">Login</a></li>
Run Code Online (Sandbox Code Playgroud)
假设您已命名路线.首先,这是一个好主意,因为您迁移更改操作的URL而不通过整个项目来更改指向该操作的链接.
我知道这是旧的,但它是值得的。
Laravel 有几个内置的辅助方法用于引用 URL操作和路由。
action
您的路由文件将如下所示。
Route::get('/funtastic', 'FuntasticController@show');
Run Code Online (Sandbox Code Playgroud)
你的刀片视图看起来像这样
<a href="{{action('FuntasticController@show')}}
@if(action('FuntasticController@show') == Request::url())
class="active"
@endif
>Some link</a>
Run Code Online (Sandbox Code Playgroud)
route
如果您使用命名路由。
<a href="{{route('namedRoute')}}
@if(route('namedRoute') == Request::url())
class="active"
@endif
>Some link</a>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18789 次 |
| 最近记录: |