php - 如何捕获包含在一对自定义 Blade 指令中的内容?

标签 php laravel directive laravel-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')

如何捕获开始和结束指令中的所有内容,处理然后将它们返回到 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/

相关文章:

javascript - 如何在 Table 内的按钮元素上定义新的 ajax 函数

php - Laravel 队列失败作业

php - 在 Laravel 中获取 GET "?"变量

c# - "[Authorize(Roles = ADMIN)]"中的括号在 ASP.NET 中意味着什么?

javascript - Vue - 指令绑定(bind)在元素刷新时不起作用

php - 简单的 html dom 抓取大型 html 文件

php - 使用Nginx和php5设置docker

php - Xdebug 已安装,但未显示在 phpinfo 上

javascript - 删除 Laravel 表单之外的请求

javascript - AngularJs 动画背景颜色/颜色