ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 视图渲染数据 我们经常需要将数据库中的数据显示在视图上。也可能是配置文件固定数据展示,下面让我们来看看视图渲染数据。为了简洁展示数据,删掉 `layout.blade.php` 中多余的代码: ```html <!doctype html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>@yield('title', 'Laravel')</title> </head> <body> <div class="flex-center position-ref full-height"> <div class="content"> @yield('content') <div class="links"> <a href="/">Home</a> <a href="/about">about</a> <a href="/news">News</a> </div> </div> </div> </body> </html> ``` 然后我们在路由向视图传递数据: ```php Route::get('/', function () { $codes = [ 'php', 'java', 'javascript', 'C', 'python' ]; // return view('welcome', ['codes' => $codes]); // return view('welcome', compact('codes')); // return view('welcome')->withCodes($codes); // return view('welcome')->with(compact('codes')); return view('welcome', [ 'codes' => [ 'php', 'java', 'javascript', 'C', 'python' ] ]); }); ``` 在视图文件中渲染数据: ```php @extends('layout') @section('title', 'Laravel') @section('content') <ul> @foreach($codes as $code) <li>{{ $code }}</li> @endforeach </ul> @endsection ``` > Blade `{{ }}` 语句会自动调用 `PHP` 的 `htmlspecialchars` 函数防止 `XSS` 攻击。 ### 显示未转义数据 默认情况下,Blade `{{ }}` 语句会自动调用 PHP 的 `htmlspecialchars` 函数防止 XSS 攻击。不想转义的话,可以使用以下语法: ```php @extends('layout') @section('title', 'Laravel') @section('content') <ul> @foreach($codes as $code) {{-- <li>{{ $code }}</li> --}} <li>{!! $code !!}</li> @endforeach </ul> @endsection ``` > Blade 也能在视图中定义注释。但是,和 HTML 的注释不同的是,Blade 注释不会被包含在应用程序返回的 HTML 内。 ### 总结 本节主要讲解视图数据渲染,重点理解 `Laravel` 框架在传递数据的5中方式,数据转义。