Расширение синтаксиса Blade

Хочу поделиться с сообществом своей небольшой библиотекой, добавляющей управляющие директивы в синтаксис Laravel-шаблонизатора Blade.Сразу небольшой пример как это выглядит:

items as $item»>{{{ $item }}}
После знакомства с Angular.js привычные глазу шаблоны стали казаться нелогичными и неудобными. Хотелось управлять тэгами и аттрибутами, а не обращаться с HTML, как с обычной строкой. Благо Blade позволяет легко расширить функционал, чем я и воспользовался.Установка Добавить пакет «sleeping-owl/blade-extended» в ваш composer.json. Добавить Service provider в ваш «app/config/app.php» — 'SleepingOwl\BladeExtended\BladeExtendedServiceProvider'. Расширенный синтаксис теперь вам доступен. Как это работает Библиотека до банального проста — все, что она делает, это конвертирует аттрибуты в корректный Blade-синтаксис. Так например код:
{{{ $item }}}
будет приведен к виду: @if (test ())@endif @foreach ($items as $item)
{{{ $item }}}
@endforeach Несколько сложнее дела обстоят с аттрибутами тэга — тут используется helper, который выводит аттрибут, только если он содержит значение.Поддерживаемые директивы bd-foreach, bd-inner-foreachПовторяет тэг целиком (bd-foreach), либо все содержимое тэга (bd-inner-foreach) в соответствии с указанными значениями.bd-ifВыводит или нет тэг в зависимости от условия.

bd-classДобавляет один или несколько классов элементу, можно использовать условия. Если у тэга уже определен аттрибут class, то новые классы будут добавлены к нему.

id» bd-attr-data-type=»$entry→type»>
bd-yield, bd-includeЭти директивы добавляют в тело тэга соответствующие команды Blade.
bd-sectionОбрамляет тэг в blade-секцию.
Хотите еще расширить синтаксис? Функционал моей библиотеки, расширяющей возможности Blade, так же может быть расширен. Вы можете зарегистрировать свои аттрибуты, которые будут обрабатываться: BladeExtended: extend ('bd-test', function (BladeExtended $bladeExtended, &$finded) { $bladeExtended→wrapOuterContent ($finded, '@if (myCustomTest ())', '@endif'); }); Исходники на GitHub | Документация и примеры

© Habrahabr.ru