Расширение синтаксиса 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 }}}
{{{ $item }}}
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 | Документация и примеры