先创建一个练习的路由文件 view.php

1. 基本操作

视图包含应用程序的 HTML,并且将控制器 / 应用程序逻辑与演示逻辑分开。视图文件存放于 resources/views 目录下。我们可以通过路由定向到视图,也可以路由→控制器→视图。我想这仅仅是取决于你的业务是否需要这么去做,或者说是否业务逻辑使有必须分层的必要性。

1.1 最简单的视图使用方式

首页面的路由视图实现

  1. <?php
  2. # 首页面路由试图,省略了文件全名称,welcome.blade.php
  3. Route::view('index', 'welcome');

如图
image.png

1.2 使用目录结构视图

我先在 resources\views\myView\see.blade.php 中定义一个自己的视图文件,代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <h3>我是 resources\views\myView\see.blade.php</h3>
  11. </body>
  12. </html>

路由

  1. <?php
  2. # mu 目录 视图文件
  3. Route::view('see', 'myView/see');

测试
image.png

1.3 传递数组数据

修改一下 resources\views\myView\see.blade.php 中定义的代码,注意模板的使用

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <h3>我是 resources\views\myView\see.blade.php</h3>
  11. <h4>{{ $name }}</h4>
  12. <h4>{{ $age }}</h4>
  13. <h4>{{ $hobby }}</h4>
  14. </body>
  15. </html>

路由文件

  1. <?php
  2. # 传递参数
  3. Route::get('see', function () {
  4. # 这里我是用'myView.see' 貌似也没有啥区别 @……@
  5. return view('myView/see', ['name' => '向上', 'age' => 24, 'hobby' => 'cook']);
  6. });
  7. # 下面的这种使用方式也是可以的
  8. Route::get('see', function () {
  9. return View::make('myView/see', ['name' => '向上', 'age' => 24, 'hobby' => 'cook']);
  10. });

测试
image.png

1.4 使用with()传递数据

这是一种相对于上一种更加灵活的方式,路由如下:

  1. <?php
  2. # 传递参数的另外一种使用方式 with
  3. Route::get('list', function () {
  4. $list = ['name' => '向上', 'age' => 24, 'hobby' => 'cook'];
  5. return view('myView/list')->with('list', $list);
  6. });

模板文件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <h3>我是 resources\views\myView\list.blade.php</h3>
  11. <h3>{{ $list['name'] }}</h3>
  12. <h3>{{ $list['age'] }}</h3>
  13. <h3>{{ $list['hobby'] }}</h3>
  14. </body>
  15. </html>

测试
image.png

1.5 判断视图是否存在

路由,创建一个404页面,rain这个对应的视图页面是没有创建的

  1. <?php
  2. use Illuminate\Support\Facades\View;
  3. # 判断视图是否存在
  4. Route::get('rain', function () {
  5. if (View::exists('myView.rain')) {
  6. //
  7. }
  8. return view('myView.404');
  9. });

404.blade.php

  1. ... ...

测试
image.png


2. 视图合成器


3. 视图优化