Laravel: Как проверить, что маршрут не содержит ничего после косой черты - PullRequest
0 голосов
/ 20 мая 2018

У меня есть условие, чтобы проверить, какой это URL, чтобы я мог установить правильный класс вкладки, чтобы быть активным.
У меня есть код

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

Последнее условие неверно, например, когдаURL-адрес http://localhost:8000/category/goodwin/new, который все еще будет правильным, что я не хочу.Как я могу написать условие, чтобы проверить, есть ли что-нибудь после category, но только после одного /

PS У меня есть другие условия для new и top posts, которые работают правильно

1 Ответ

0 голосов
/ 21 мая 2018

Вы можете использовать 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' : '' }}

Я бы подумал отойти от троичного оператора, так как это становится довольно громоздким.Возможно, вам следует также поместить эту логику в контроллер и просто передать переменную в представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...