Laravel:如何在斜线后检查路由是否包含任何内容

时间:2018-05-20 16:38:05

标签: laravel

我有条件检查它是什么网址,以便我可以设置一个合适的标签类来激活 我有代码

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

最后一个条件是错误的,例如当网址为http://localhost:8000/category/goodwin/new时仍然是正确的,这是我不想要的。如何编写条件以检查category之后是否有任何内容,但仅在/之后

P.S。我还有newtop posts正常工作的其他条件

1 个答案:

答案 0 :(得分:0)

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

示例:

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

正则表达式(.*)\/category\/(.*)\/(?!popular)(.*)会检查网址是否与.../category/*/*匹配,除非最终*popular

这将允许你这样做:

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

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