如何捕获包装在一对自定义刀片指令中的内容?



我正在尝试编写一个自定义的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')

如何捕获开始和结束指令中的所有内容,处理并将它们返回到视图?

注意:这里有一个听起来类似的问题,评论链接到另一个据称有答案的问题,但它并没有真正回答我在这里描述的问题。

我在发布这个问题后不久就找到了答案。

将以下内容添加到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

最新更新