首页 > 解决方案 > Laravel:如何检查路线是否在斜线后不包含任何内容

问题描述

我有一个条件来检查它是什么 URL,以便我可以将适当的选项卡类设置为处于活动状态。
我有代码

`{{ Request::is('popular') || Request::is('/') || Request::is('category/*/popular') || Request::is('category/*') ? 'nav-active' : '' }}`

最后一个条件是错误的,例如当 URLhttp://localhost:8000/category/goodwin/new仍然正确时,这是我不想要的。我怎样才能写一个条件来检查是否有任何东西,category但只有在一个之后/

PS我有其他条件new并且top posts可以正常工作

标签: laravel

解决方案


您可以使用url()->current()然后对其进行字符串分析。例如,使用 preg_match 和正则表达式,或者简单地计算斜杠的数量。

例子:

preg_match("/(.*)\/category\/(.*)\/(?!popular)(.*)/", url()->current());

正则表达式(.*)\/category\/(.*)\/(?!popular)(.*)检查 URL 是否匹配.../category/*/*,除了 final*popular.

这将允许您执行以下操作:

{{ (Request::is('popular') || 
   Request::is('/') || 
   Request::is('category/*/popular') || 
   Request::is('category/*')) &&
   preg_match("/(.*)\/category\/(.*)\/(?!popular)(.*)/", url()->current()) == 0
   ? 'nav-active' : '' }}

我会考虑远离三元运算符,因为它变得非常庞大。您可能还应该将此逻辑放在控制器中,然后将变量传递给视图。


推荐阅读