Laravel Blade 模板:自定义 Blade 指令 1 个改进

自定义指令介绍

当你在 Blade 里编写了重复的代码逻辑时,你可以使用自定义指令来封装。

在 Blade 使用自定义指令时,有点类似管道:把信息进一步处理后再输出。

如何创建自定义指令

Blade 允许你使用 directive 方法自定义指令。当 Blade 编译器遇到自定义指令时,这会调用该指令包含的表达式提供的回调。

下面的例子创建了 @datetime($var) 指令,一个格式化给定的 DateTime 的实例 $var

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * 执行注册后引导服务.
     *
     * @return void
     */
    public function boot()
    {
        Blade::directive('datetime', function ($expression) {
            return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
        });
    }

    /**
     * 在容器中注册绑定.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

如你所见,我们将在传递给该指令的任意表达式中链式调用 format 方法。在这个例子中,该指令将生成如下原生 PHP 代码:

<?php echo ($var)->format('m/d/Y H:i'); ?>

在更新 Blade 指令的逻辑之后,需要 Blade 视图的所有缓存。可以使用 view:clear Artisan 命令删除 Blade 视图缓存。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!