Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Приветствую. Лара — мой первый фреймворк, который только начинаю осваивать. Допустим, у меня есть навигация, которую я хочу вынести в отдельный файл nav.blade.php:
<ul>
<li><a href="/index">Главная</a></li>
<li><a href="/contacts">Контакты</a></li>
</ul>
Каким образом можно реализовать, чтобы в теги <li>, в зависимости от страницы, куда я попадаю (index или contacts), подставлялся class="action" ? Сами эти страницы, соответственно, тоже раздельны: index.blade.php и contacts.blade.php. Может быть чуток кривовато сформулировал мысль, за что прошу прощения. Заранее благодарен.
Не в сети
Тоже бы хотелось понять алгоритм)
Не в сети
Можно из контроллера передавать переменную вроде $menu = 'index', а в темплейте организовать проверку:
<li {{ @if($menu == 'index') class='action' @endif }}><a href="/index">Главная</a></li>
Чтобы исключить повторение кода, можно просто массив создать из элементов меню и переменную $menu для выделенного элемента. Потом прогнать это все через @foreach для построения кода меню.
Для таких вещей по уму надо бы использовать Laravel Collective, но, насколько я знаю, при построении простых списков нельзя дать отдельному <li> элементу определенный класс.
Не в сети
Проще смотреть по роуту:
<ul>
<li @unless(strpos(Route::currentRouteName(),'index') === false) active @endunless><a href="/index">Главная</a></li>
<li @unless(strpos(Route::currentRouteName(),'contact') === false) active @endunless><a href="/contacts">Контакты</a></li>
</ul>
...
Расшифруйте, пожалуйста, это:
@unless(strpos(Route::currentRouteName(),'index') === false) active @endunless
Изменено Serhio (06.04.2016 20:27:10)
Не в сети
Не в сети
WebDev пишет:...
Расшифруйте, пожалуйста, это:
@unless(strpos(Route::currentRouteName(),'index') === false) active @endunless
К примеру вы находитесь на странице:
you_site.com/contact
Route::currentRouteName() вернет вам you_site.com/contact.
@unless - проверка на условие ( не равно, аналог if (!$param) )
strpos - поиск подстроки в строке.
То есть в текущем роуте (you_site.com/contact) мы ищем contact, если строка найдена выполняется условие. Только не active, а class="active"
Не в сети
Не в сети
Не в сети
}%Разобрался и сделал так
@if (Route::current()->getUri() === '/') active @endif
А такой урл как вы сравните?
site.ru/user/1/news/55/edit
Не в сети
Страницы 1