创建视图
视图包含应用程序的 HTML,并且将控制器/应用程序逻辑与演示逻辑分开。视图文件存放于 resources/views 目录下。一个简单的视图如下所示:
<!-- 此视图文件位置:resources/views/greeting.blade.php -->
<html>
<body>
<h1>Hello, {{ $name }}</h1>
</body>
</html>
使用全局辅助函数 view 来返回:
Route::get('/', function () {
return view('greeting', ['name' => 'James']);
});
view 函数中,传入的第一个参数对应着 resources/views
目录中视图文件的名称,第二个参数是可在视图文件中使用的数据数组。在示例中,我们传递 name 变量,该变量可以使用 Blade 模板语言 在视图中显示。
视图文件也可以嵌套在 resources/views 目录的子目录中。「点」符号可以用来引用嵌套视图。例如,如果你的视图存储在 resources/views/admin/profile.blade.php,则可以这样引用它:
return view('admin.profile', $data);
判断视图文件是否存在
use Illuminate\Support\Facades\View;
if (View::exists('emails.customer')) {
//
}
向视图传递数据
使用数组将数据传递到视图:
return view('greetings', ['name' => 'Victoria']);
第二个参数的数据必须是键值对数组。在视图文件中,你可以通过对应的键获取相应的值,例如
<?php echo $key; ?>
可以使用 with 方法将单个数据片段添加到视图:
return view('greeting')->with('name', 'Victoria');
与所有视图共享数据
如果需要共享一段数据给应用程序的所有视图,你可以在服务提供器的 boot 方法中调用视图 Facade 的 share 方法。例如,可以将它们添加到 AppServiceProvider 或者为它们生成一个单独的服务提供器:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
class AppServiceProvider extends ServiceProvider
{
/**
* 引导任何应用服务。
*
* @return void
*/
public function boot()
{
View::share('key', 'value');
}
/**
* 注册服务提供器
*
* @return void
*/
public function register()
{
//
}
}
视图合成器
视图合成器是在渲染视图时调用的回调或者类方法。如果你每次渲染视图时都要绑定视图的数据,视图合成器可以帮你将这些逻辑整理到特定的位置。
网友评论