Blade 模板
简介
Blade 是 Laravel 提供的一个简单而又强大的模板引擎。 和其他流行的 PHP 模板引擎不同,Blade 并不限制你在视图中使用原生 PHP 代码。实际上,所有 Blade 视图文件都将被编译成原生的 PHP 代码并缓存起来,除非它被修改,否则不会重新编译,这就意味着 Blade 基本上不会给你的应用增加任何负担。Blade 模板文件使用 .blade.php
作为文件扩展名,被存放在 resources/views
目录。
Blade 视图可以使用全局 view
函数从 Route 或控制器返回。当然,正如有关 views 的文档中所描述的,可以使用 view
函数的第二个参数将数据传递到 Blade 视图:
Route::get('/', function () {
return view('greeting', ['name' => 'Finn']);
});
技巧:想要让您的 Blade 模板更上一层楼并轻松构建动态界面?请阅读 Laravel Livewire。
显示数据
你可以把变量置于花括号中以在视图中显示数据。例如,给定下方的路由:
Route::get('/', function () {
return view('welcome', ['name' => 'Samantha']);
});
您可以像如下这样显示 name
变量的内容:
Hello, {{ $name }}.
技巧:Blade 的 {{ }}
语句将被 PHP 的 htmlspecialchars
函数自动转义以防范 XSS 攻击。
您不仅限于显示传递给视图的变量的内容。您也可以回显任何 PHP 函数的结果。实际上,您可以将所需的任何 PHP 代码放入 Blade echo 语句中:
The current UNIX timestamp is {{ time() }}.
HTML 实体编码
默认情况下,Blade(和 Laravel e
助手)将对 HTML 实体进行双重编码。如果您想禁用双重编码,请从 AppServiceProvider
的 boot
方法调用 Blade::withoutDoubleEncoding
方法:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* 在此启动任意服务
*
* @return void
*/
public function boot()
{
Blade::withoutDoubleEncoding();
}
}
展示非转义数据
默认情况下, Blade {{ }}
语句将被 PHP 的 htmlspecialchars
函数自动转义以防范 XSS 攻击。如果不想您的数据被转义,那么 您可使用如下的语法:
Hello, {!! $name !!}.
注意:在应用中显示用户提供的数据时请格外小心,请尽可能的使用转义和双引号语法来防范 XSS 攻击。