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字符串类型的数据才能在页面展示

浙公网安备 33010602011771号