我正在尝试编写一个自定义 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')
如何捕获开始和结束指令中的所有内容,处理然后将它们返回到 View ?
注意:有一个听起来类似的问题here ,有一条评论链接到另一个据称有答案的问题,但它并没有真正回答我在这里描述的问题。
最佳答案
我在发布这个问题后不久就找到了答案。
将以下内容添加到您的 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
关于php - 如何捕获包含在一对自定义 Blade 指令中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52036049/