Php Laravel 5检查当前url是否与操作匹配
我目前正在使用Php Laravel 5检查当前url是否与操作匹配,php,laravel,routing,laravel-5,Php,Laravel,Routing,Laravel 5,我目前正在使用{action('名称空间)生成我的应用程序URL\Class@method“)}。如何检查当前页面请求是否映射到当前操作命名空间\Class@method 我想做一些类似的事情: <a href="{{action('Namespace\Class@method')}} @if (currentAction('Namespace\Class@method')) class="active" @endif >Some link</a> Ap
{action('名称空间)生成我的应用程序URL\Class@method“)}
。如何检查当前页面请求是否映射到当前操作命名空间\Class@method
我想做一些类似的事情:
<a href="{{action('Namespace\Class@method')}}
@if (currentAction('Namespace\Class@method'))
class="active"
@endif
>Some link</a>
App\Http\Controllers\FooBarController@method
如何在Laravel 5中实现这一点?没有用于此的内置方法,但是您可以使用
Route::currentRouteAction()
检索当前操作名称。不幸的是,此方法将返回完全命名空间的类名。因此,您将得到如下结果:
<a href="{{action('Namespace\Class@method')}}
@if (currentAction('Namespace\Class@method'))
class="active"
@endif
>Some link</a>
App\Http\Controllers\FooBarController@method
您可以检查这一点,也可以使用类似于ends\u和
的方法,这样就不必指定完整路径:
@if(ends_with(Route::currentRouteAction(), 'FooBarController@method'))
您也可以考虑将您的路由命名为“代码>”作为“= >”路由。这将允许您使用:
Route::is('Route.name')
我知道这已经很旧了,但值得一试
拉威尔有两个动作和路线
操作
您的路由文件如下所示
Route::get('/funtastic', 'FuntasticController@show');
您的刀片视图将如下所示
<a href="{{action('FuntasticController@show')}}
@if(action('FuntasticController@show') == Request::url())
class="active"
@endif
>Some link</a>
实际上,我将其简化为以下代码:
<li class="@if(Route::is('getLogin')) active @endif"><a href="{{URL::route('getLogin')}}">Login</a></li>
这假定您已命名路由。首先,这是一个好主意,因为您可以更改某个操作的url,而无需通过整个项目来更改该操作的链接 这就是我在没有任何命名路由的情况下的操作方式
<a class="{{ str_contains(request()->url(), '/some-page') ? 'active' : '' }}" href="/some-page">Some Page</a>
这不是一个完美的解决方案,但它适用于大多数情况它非常适合我
<a class="@if (\Route::current()->getName() == 'device_media') active @endif" href="{{ route('device_media', ['brand_slug'=>$brand->slug, 'slug'=>$device->slug]) }}" > Media</a>
感谢您提供有关路线命名的信息。我已经有了我的名字,所以节省了我很多时间和精力。