Вы можете использовать url()->current()
, а затем выполнить анализ строки на этом.Например, с preg_match и регулярным выражением, или просто посчитав количество слешей.
Пример:
preg_match("/(.*)\/category\/(.*)\/(?!popular)(.*)/", url()->current());
Регулярное выражение (.*)\/category\/(.*)\/(?!popular)(.*)
проверяет, соответствует ли URL-адрес .../category/*/*
, за исключением случаев, когда последний*
- это popular
.
Это позволит вам сделать:
{{ (Request::is('popular') ||
Request::is('/') ||
Request::is('category/*/popular') ||
Request::is('category/*')) &&
preg_match("/(.*)\/category\/(.*)\/(?!popular)(.*)/", url()->current()) == 0
? 'nav-active' : '' }}
Я бы подумал отойти от троичного оператора, так как это становится довольно громоздким.Возможно, вам следует также поместить эту логику в контроллер и просто передать переменную в представление.