Laravel Blade 模板:自定义 Blade 指令
自定义指令介绍
当你在 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 视图缓存。
你也可以使用 Helpers 来建立一个全局函数,此函数你可以在任何地方使用。 Example: app/Helpers/Utility.php
Example: resources/views/test.blade.php