Как я могу захватить контент, завернутый в пару пользовательских директив Blade?

Я пытаюсь написать собственную директиву Blade, которая может изменить содержимое и вернуть его, что-то вроде этого:

<div class="some-text">
@uppercase
This is a line of text.
@enduppercase
</div>

который будет отображаться в HTML следующим образом:

<div class="some-text">
THIS IS A LINE OF TEXT.
</div>

То, что я НЕ хочу знать, как сделать следующее:

@uppercase('This is a line of text')

Как я могу захватить весь контент в директивах start и end, обработать и затем вернуть их в представление?

Примечание: есть похожий вопрос Вот, с комментарием, ссылающимся на другой вопрос, который якобы имеет ответ, но на самом деле он не отвечает на вопрос, который я описал здесь.

1

Решение

Я нашел ответ вскоре после публикации этого вопроса.

Добавьте следующее к вашему AppServiceProvider::boot() метод:

\Blade::directive('uppercase', function () {
return '<?php ob_start(); ?>';
});

\Blade::directive('enduppercase', function () {
return '<?php echo strtoupper(ob_get_clean()); ?>';
});

Я сослался на этот код для идеи: https://github.com/RobinRadic/blade-extensions/blob/master/src/Directives/EndspacelessDirective.php

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector