Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 06.04.2016 18:09:36

Шаблонизатор в Laravel

Приветствую. Лара — мой первый фреймворк, который только начинаю осваивать. Допустим, у меня есть навигация, которую я хочу вынести в отдельный файл nav.blade.php:

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. Может быть чуток кривовато сформулировал мысль, за что прошу прощения. Заранее благодарен.

Не в сети

#2 06.04.2016 18:24:27

Re: Шаблонизатор в Laravel

Тоже бы хотелось понять алгоритм)

Не в сети

#3 06.04.2016 19:59:42

Re: Шаблонизатор в Laravel

Можно из контроллера передавать переменную вроде $menu = 'index', а в темплейте организовать проверку:

<li {{ @if($menu == 'index') class='action' @endif }}><a href="/index">Главная</a></li>

Чтобы исключить повторение кода, можно просто массив создать из элементов меню и переменную $menu для выделенного элемента. Потом прогнать это все через @foreach для построения кода меню.

Для таких вещей по уму надо бы использовать Laravel Collective, но, насколько я знаю, при построении простых списков нельзя дать отдельному <li> элементу определенный класс.

Не в сети

#4 06.04.2016 20:13:22

WebDev

Re: Шаблонизатор в Laravel

Проще смотреть по роуту:

<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>

#5 06.04.2016 20:26:27

Re: Шаблонизатор в Laravel

WebDev пишет:

...

Расшифруйте, пожалуйста, это:
@unless(strpos(Route::currentRouteName(),'index') === false) active @endunless

Изменено Serhio (06.04.2016 20:27:10)

Не в сети

#6 06.04.2016 20:52:26

Re: Шаблонизатор в Laravel

Кажись разобрался

Не в сети

#7 06.04.2016 20:54:39

WebDev

Re: Шаблонизатор в Laravel

Serhio пишет:
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"

#8 06.04.2016 22:56:00

Re: Шаблонизатор в Laravel

Премного благодарен.

Не в сети

#9 11.04.2016 09:09:30

Re: Шаблонизатор в Laravel

Кстати, а если, допустим, я нахожусь не на site.com/index, а на site.com, то как тогда использовать
@unless(strpos(Route::currentRouteName(),’index’) === false) active @endunless
Или для таких случаев есть другие варианты?

Не в сети

#10 11.04.2016 09:30:48

Re: Шаблонизатор в Laravel

Разобрался и сделал так
@if (Route::current()->getUri() === ’/’) active @endif

Изменено Serhio (11.04.2016 09:37:18)

Не в сети

#11 11.04.2016 16:20:08

WebDev

Re: Шаблонизатор в Laravel

Serhio пишет:

}%Разобрался и сделал так
@if (Route::current()->getUri() === '/') active @endif

А такой урл как вы сравните?
site.ru/user/1/news/55/edit

#12 11.04.2016 16:47:50

Re: Шаблонизатор в Laravel

Да у меня нет стольких вложений в проекте. Все по-простому, пока что ☺ А как было бы правильнее для / ?

Изменено Serhio (11.04.2016 16:47:58)

Не в сети

Подвал раздела