20.5.5 CodeIgniter的View(视图)
在CodeIgniter中,视图从不直接调用,必须被一个控制器来调用。
(1)使用文本编辑器创建一个名为helloview.php的文件,如下面的代码20-7所示。
代码20-7 视图文件helloview.php
01 <html>
02 <head>
03 <title>Welcome-helloview.php</title>
04 </head>
05 <body>
06 <h1>Hello everyone!</h1>
07 </body>
08 </html>
【代码解析】这是一段简单的HTML代码,只用标题输出一句话。
(2)将该代码保存到application/views/目录下。然后,需要使用某个方法载入该视图文件。这个方法的用法如下所示。
$this->load->view('name');
(3)这行代码中,name是需要载入的视图文件的名字,文件的后缀名没有必要写出。接下来,在hello控制器的文件hello.php中,写入这段用来载入视图的代码,此时完整的hello.php如代码20-8所示。
代码20-8 在Controller中载入视图hello.php
01 <?php
02 class Hello extends Controller
03 {
04 function index()//方法index()
05 {
06 $this->load->view('helloview');
07 }
08
09 function saylucky()//方法saylucky()
10 {
11 echo'It\'s time to say"Good Luck"!';
12 }
13
14 function sayhello($name)//带参数的sayhello()方法
15 {
16 echo"Hello,$name!";
17 }
18 }
19 ?>
【代码解析】上述代码创建3个方法,其中第3个带一个参数$name。最重要的是第6行代码,载入前面创建好的helloview视图。
(4)此时再通过地址http://localhost/ch20/index.php/hello浏览hello.php,将看到如图20-7所示的执行结果。
(5)通过这段代码,读者了解了如何载入一个视图。但视图中经常需要动态数据的内容,下面就介绍如何处理含有动态数据的视图。动态数据通过控制器以一个数组或是对象的形式传入视图,这个数组或对象作为视图载入方法的第2个参数,如代码20-9所示。
代码20-9 向视图中添加动态数据hello.php
01 <?php
02 class Hello extends Controller
03 {
04 function index()//方法index()
05 {
06 $data['title']="New Title-Hello.php";
07 $data['heading']="大家好,欢迎使用CodeIgniter框架!";
08 $this->load->view('helloview1',$data);
09 }
10
11 function saylucky()//方法saylucky()
12 {
13 echo'It\'s time to say"Good Luck"!';
14 }
15
16 function sayhello($name)//带参数的sayhello()方法
17 {
18 echo"Hello,$name!";
19 }
20 }
21 ?>
【代码解析】第6、7两行定义了数组$data的两个元素,这两个元素分别是页面的标题和页面的文本内容。代码第8行向载入视图的方法view()传入第2个参数,该参数即代码前两行定义的数组。
(6)此时访问hello.php会看到如图20-8所示的执行结果,从图20-8可以看出,浏览器上的页面标题和页面的heading文字都更换成动态数据内容。
(7)最后还需要修改helloview.php,将在其中添加输出数据的PHP代码,修改后按hello-view1.php保存在application/views/目录下,修改后的代码如下所示。
01 <html>
02 <head>
03 <title><?php echo$title;?></title>
04 </head>
05 <body>
06 <h1><?php echo$heading;?></h1>
07 </body>
08 </html>
【代码解析】第3行和第6行是有输出数据的PHP代码。
至此,已经向读者介绍了CodeIgniter的最简单的用法,但离实际应用开发还很远,读者需要通过CodeIgniter提供的手册进一步学习、理解CodeIgniter框架。