CI4框架应用五 - 加载视图

这节我们来看一下CI4框架中视图的加载, CI4中提供了几种方式加载视图。

 

1. 利用CI4框架提供的全局函数view(‘模板名’),如果需要传参数可以在第二个参数传一个数组

我们先修改一下之前定义的方法,改用视图模板的方式来输出内容

 1 <?php
 2 
 3 namespace App\Controllers;
 4 
 5 class Home extends BaseController
 6 {
 7     public function welcome()
 8     {
 9         return view('welcome');
10     }
11 }

然后我们在Views目录下新建模板文件welcome.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     <title>视图加载</title>
 7 </head>
 8 <body>
 9     <h3>视图加载</h3>
10     <p>这是一个通过视图加载的页面!</p>
11 </body>
12 </html>

 

我们来看一下页面效果

 

 

 

我们再来给页面传递2个参数

 1 <?php
 2 
 3 namespace App\Controllers;
 4 
 5 class Home extends BaseController
 6 {
 7     public function welcome()
 8     {
 9         $data = [
10             'author' => '小白加小白',
11             'created_time' => date('Y-m-d H:i:s')
12         ];
13 
14         return view('welcome', $data);
15     }
16 }

 

再修改一下视图模板

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>视图加载</title>
 8 </head>
 9 
10 <body>
11     <h3>视图加载</h3>
12     <p>作者:<?= $author; ?></p>
13     <p>时间:<?= $created_time; ?></p>
14     <p>这是一个通过视图加载的页面!</p>
15 </body>
16 
17 </html>

 

再看一下页面效果

 

 

 

2. 我们再看一下其他的视图加载方式

 1 <?php
 2 
 3 namespace App\Controllers;
 4 
 5 class Home extends BaseController
 6 {
 7     public function welcome()
 8     {
 9         $view = \Config\Services::renderer();
10 
11         return $view->setVar('author', '小白加小白')
12             ->setVar('created_time', date('Y-m-d H:i:s'))
13             ->render('welcome');
14     }
15 }

 

3. 页面展示效果和第一种方法一致,我们再看下另一种加载方法

 1 <?php
 2 
 3 namespace App\Controllers;
 4 
 5 class Home extends BaseController
 6 {
 7     public function welcome()
 8     {
 9         $view = new \CodeIgniter\View\View(new \Config\View());
10 
11         $data = ['author' => '小白加小白', 'created_time' => date('Y-m-d H:i:s')];
12 
13         return $view->setData($data)->render('welcome');
14     }
15 }

 

这样也可以得到同样的页面内容。

总结:

第一种方法是框架提供的全局函数,简单易用

第二种和第三种方法先得到一个渲染器,然后去渲染一个模板,通过setVar和setData的方式传递参数

 

注意:我们是通过return返回渲染后的模板内容的,我们也可以通过echo的方式输出模板内容,那么我们是否可以return的方式返回一个数字呢?

 1 <?php
 2 
 3 namespace App\Controllers;
 4 
 5 class Home extends BaseController
 6 {
 7     public function welcome()
 8     {
 9         return 1;
10     }
11 }

我们看到页面是没有输出内容的

 

 我们如果返回一个字符串的数字呢

 1 <?php
 2 
 3 namespace App\Controllers;
 4 
 5 class Home extends BaseController
 6 {
 7     public function welcome()
 8     {
 9         return "1";
10     }
11 }

再刷新一下页面

 

 

所以,在控制器中只有return字符串类型的数据才能在页面展示

 

posted @ 2020-08-04 19:21  小白加小白  阅读(442)  评论(0)    收藏  举报