刀片中的Laravel资源匹配

时间:2019-03-08 13:52:06

标签: php laravel routing wildcard laravel-5.8

我已经使用laravel(5.8)资源路由构建了一个典型的Crud系统。

Route::resource('users', 'UserController');

我正在尝试匹配该资源的任何方法,以使链接在菜单中显示为活动状态:

  <li class="nav-item 
      @if(Request::route()->getName() == 'users.index' 
        || Request::route()->getName() == 'users.create'
        || Request::route()->getName() == 'users.show'
        || Request::route()->getName() == 'users.*.edit') 
       active
      @endif">
       <a href="#">Users</a>
  </li>

是否有明确的解决方案?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法实现这一目标。

<li class="nav-item {{ str_is('users.*', Route::currentRouteName()) ? 'active' : '' }}>
  <a href="#">Users</a>
</li>

这使用str_is() laravel帮助器来查看字符串是否包含users.。这是根据当前路线的名称进行检查的。

然后,如果为true,则输出active,否则为false。

注意::在Laravel 5.8中,默认情况下已删除字符串和数组帮助器。您的代码将需要使用Str门面。

<li class="nav-item {{ \Str::is('users.*', Route::currentRouteName()) ? 'active' : '' }}>
  <a href="#">Users</a>
</li>

答案 1 :(得分:0)

我在laravel中发现多次溃败的最好方法是 这样,它将匹配所有路由,例如role.index角色.create角色。*和用户。*

class="{{ str_contains(Route::currentRouteName(), ['roles','users']) ? 'active' : '' }}"