Давайте рассмотрим ещё одну новую возможность, появившуюся в Laravel 5.3.
==Что такое директивы Blade?==
Язык шаблонов Laravel Blade предоставляет нечто, называемое "директивы", которые представляют собой настраиваемые теги для часто используемых управляющих структур, начинающиеся с символа %%(t)@%%. Если вы когда-нибудь писали шаблоны в Blade, то скорее всего знаете %%(t)@if%%, %%(t)@foreach%% и т.д.
Вообще, эти директивы управляющих структур просто эмулируют соотвествующие PHP-аналоги. Например, %%@if(condition)%% - это то же самое, что и %%
@foreach ($pages as $page)
{{ $page->title }} ({{ $loop->iteration }} / {{ $loop->count }})
@endforeach
%%
Но также вы получаете ссылку на родительские переменные %%$loop%%, когда работаете с вложенными циклами. Вы можете использовать %%(t)depth%%, чтобы определить, вложен ли цикл, и %%(t)parent%% для получения переменной %%$loop%% его родителя. Это открывает подобные возможности для использования шаблонов:
%%
@foreach ($pages as $page)
- {{ $loop->iteration }}: {{ $page->title }}
@if ($page->hasChildren())
@foreach ($page->children() as $child)
- {{ $loop->parent->iteration }}.{{ $loop->iteration }}:
{{ $child->title }}
@endforeach
@endif
@endforeach
%%
Вот и всё!