首页 > 解决方案 > 刀片中的Laravel资源匹配

问题描述

我已经使用 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>

有没有明确的解决方案?

标签: phplaravelroutingwildcardlaravel-5.8

解决方案


您可以使用以下方法来实现此目的。

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

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

然后如果为真则输出active,如果为假则不输出。

注意:在 Laravel 5.8 中,默认删除了字符串和数组助手。您的代码将需要使用Str外观。

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

推荐阅读