Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5检查当前url是否与操作匹配_Php_Laravel_Routing_Laravel 5 - Fatal编程技术网

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>
    

    感谢您提供有关路线命名的信息。我已经有了我的名字,所以节省了我很多时间和精力。