创建视图
视图包含应用的 HTML 代码,并将应用的控制器逻辑和表现逻辑进行分离。视图文件存放在 resources/views 目录中。下面是一个简单的视图示例:
<!-- resources/views/greeting.blade.php 视图文件 -->
<html>
<body>
<h1>Hello, {{ $name }}</h1>
</body>
</html>
可以通过辅助函数 view ,返回这个视图响应:
Route::get('/', function () {
return view('greeting', ['name' => 'jack']);
});
view 方法的第一个参数是 resources/views 目录下相应的视图文件的名称,第二个参数是一个数组,表示传递给视图文件的数据。
在这个例子中,我们传递了一个 name 变量,在视图中通过使用 Blade 语法将其显示出来。
当然,视图还可以存放在 resources/views 的子目录中,用“.”号来引用子目录中的视图。
例如,如果视图存放路径是 resources/views/admin/profile.blade.php,那么我们可以这样引用它:
return view('admin.profile', $data);
判断视图是否存在
如果需要判断视图是否存在,可调用 View 门面上的 exists 方法,如果视图存在则返回 true:
use Illuminate\Support\Facades\View;
if (View::exists('emails.customer')) {
//
}
创建第一个有效视图
调用 View 门面上的 first 方法,可以用于创建给定视图数组中的第一个存在的视图:
use Illuminate\Support\Facades\View; return View::first(['custom.admin', 'admin'], $data);
这个功能在应用或扩展包允许视图被自定义或覆盖时很有用。
传递数据到视图
可以简单通过数组方式将数据传递到视图:
return view('greeting', ['name' => 'jack']);
除此之外,还可以通过 with 方法传递独立的数据片段到视图:
$view = view('greeting')->with('name', 'jack');
在视图间共享数据
有时候,我们需要在所有视图之间共享数据片段,这时可以使用视图门面的 share 方法,通常,需要在某个服务提供者的 boot 方法中调用 share 方法,你可以将其添加到 AppServiceProvider 或生成独立的服务提供者来存放这段代码逻辑:
<?php
namespace App\Providers;
use View;
class AppServiceProvider extends ServiceProvider
{
/**
* 启动所有应用服务
*
* @return void
*/
public function boot()
{
View::share('key', 'value');
}
/**
* 注册服务提供者
*
* @return void
*/
public function register()
{
//
}
}
内容版权声明:除非注明,否则皆为本站原创文章。
