阅读(939)
赞(11)
Laravel 8 扩展 Blade
2021-06-28 16:48:20 更新
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 register()
{
//
}
/**
* 驱动应用服务。
*
* @return void
*/
public function boot()
{
Blade::directive('datetime', function ($expression) {
return "<?php echo ($expression)->format('m/d/Y H:i'); ?>";
});
}
}
如您所见,我们将在任何被传递给该指令的表达式中链式调用 format
方法。因此,在这个例子中,最终该指令生成的 PHP 代码如下:
<?php echo ($var)->format('m/d/Y H:i'); ?>
注意:在更新了 Blade 指令的逻辑后,您需要删除所有的 Blade 视图缓存。您可以通过
view:clear
Artisan 命令来实现。