CI(CodeIgniter)框架入门教程——第二课 初始MVC
2014-03-06 01:57
489 查看
本文转载自:http://www.softeng.cn/?p=53
[align=left]今天的主要内容是,使用CodeIgniter框架完整的MVC内容来做一个简单的计算器,通过这个计算器,让大家能够体会到我在第一节课中所介绍的标准的MVC框架与用户交互的一个过程。下面,开始今天的课程。[/align]
[align=left]首先,还是和昨天一样,解压下载到的CodeIgniter框架源码,更改目录名称为CI_02(如果不会此步骤,请看第一课)并载入工程。在昨天的例子中,大家可以看到,最先被修改的控制器是Welcome类,可是一般来说,访问一个网站不应该是先访问根目录下的index页面吗?其实这里是CI框架的一个功能,也是大多数MVC框架都有的功能,那就是设置默认控制器,在CI中有很多配置文件,其中在config文件夹下的routes.php(路由配置,这里写的多清楚啊)文件里,大家可以看到这样一行代码[/align]
这行代码的作用就是配置默认的控制器,为了让大家能够更好的学习到CI框架,这里,我们将这行代码修改为
接下来,我们创建属于我们自己的calculate控制器,在controllers文件夹下,新建一个php文件,文件名是calculate.php,然后书写里面的代码
[align=left]在上面的代码中,我们可以注意到,我们的类名与文件名同名,但首字母是大写的,这是CI的规则,必须这样做,而且,所有的控制器都必须要继承自CI_Controller类,另外,可以看到,我们在文件结束的地方只有两行注释,并没有PHP的结束标签“?>”,在这里不对此做过多解释,只是CI推荐这样写,如果大家对这点感兴趣,我会在后面的课程中讲到。[/align]
[align=left]在上面的控制器当中加载了一个视图,但是这个视图现在还没有,没关系,现在我们就来动手写这个视图,在views文件夹下新建一个php文件,文件名为calculate_view.php,打开文件,书写具体的代码[/align]
在上面的表单中,我们的提交路径指向的其实是calculate类中的一个方法,这个方法的名字就是count,关于CI框架路径的规则,我将在下一讲中详细介绍。接下来,我们来书写controller中对应的代码,在calculate控制器中加入如下的函数:
我们看到在控制器的代码中,调用了calculate_model模型下面的count方法,但是在调用模型之前,控制器必须先要加载函数,所以,需要在控制器的构造函数中,加入如下代码:
接下来,我们就按照控制器里面的调用,创建我们的calculate_model模型和count方法,所有的模型都是放在models文件夹下的,所以,我们需要在models文件夹下创建一个名为calculate_model.php的文件,创建好后,我们来书写model端的代码:
现在,已经进行到了模型将计算结果返回给了控制器,还剩最后一步,就构成了一个标准的、完整的MVC框架执行过程,那就是控制器再次加载视图来显示计算结果。我们需要在views文件夹下创建一个视图(PHP文件),取名为result_view.php,代码如下:
大家可以注意到,在这个视图中,出现了PHP代码,而且出现了一些变量,这些变量是哪来的呢?这就是今天要讲到的另一个重点,给视图添加动态数据。在视图的使用中,可以通过控制器给视图添加动态数据,这些数据在控制器里都是以数组键值对的形式定义的,在控制器加载视图的同时,数据数组做为参数传递给视图;在视图中,我们只需要知道数据在数组中的键名就可以取到想要的数据。比如,在控制器里定义的数据数组是:
那么在视图中,只需要知道键名,就可以取得相对应的数据,比如:
写好了用于显示计算结果的视图,也学会了怎样给视图添加动态数据,现在只需要稍微修改一下前面写好的控制器的count函数,计算结果就可以显示在result_view视图上了,对count函数修改后的代码如下:
[align=left]可以看到,上面的代码中,只是将用户输入的数字和操作符以及模型返回的计算结果放入data数组中,然后将数组做为加载视图时的第二个参数,就可以实现在视图中显示计算结果。[/align]
[align=left]看到这里,恭喜你,你已经成功的学会了MVC框架的基本内容,其实一点都不难,在接下来的课程中,我将逐步讲解CI框架中其他类库和辅助函数的使用方法。[/align]
[align=left]总结:今天学习了CI框架的MVC框架的基本内容,到此位置,MVC的基本功能已经实现,下一讲的内容是URI以及使用ajax。[/align]
[align=left] [/align]
[align=left]第二课源代码下载地址:[/align]
[align=left]http://www.softeng.cn/?p=53[/align]
[align=left]今天的主要内容是,使用CodeIgniter框架完整的MVC内容来做一个简单的计算器,通过这个计算器,让大家能够体会到我在第一节课中所介绍的标准的MVC框架与用户交互的一个过程。下面,开始今天的课程。[/align]
[align=left]首先,还是和昨天一样,解压下载到的CodeIgniter框架源码,更改目录名称为CI_02(如果不会此步骤,请看第一课)并载入工程。在昨天的例子中,大家可以看到,最先被修改的控制器是Welcome类,可是一般来说,访问一个网站不应该是先访问根目录下的index页面吗?其实这里是CI框架的一个功能,也是大多数MVC框架都有的功能,那就是设置默认控制器,在CI中有很多配置文件,其中在config文件夹下的routes.php(路由配置,这里写的多清楚啊)文件里,大家可以看到这样一行代码[/align]
$route['default_controller'] = "welcome";
这行代码的作用就是配置默认的控制器,为了让大家能够更好的学习到CI框架,这里,我们将这行代码修改为
$route['default_controller'] = "calculate";
接下来,我们创建属于我们自己的calculate控制器,在controllers文件夹下,新建一个php文件,文件名是calculate.php,然后书写里面的代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /* * 计算控制器,类名首字母必须大写,所有的控制器必须继承自CI_Controller类 */ class Calculate extends CI_Controller { // 构造方法 function __construct() { parent::__construct(); } // 默认方法 function index() { // 加载calculate_view视图 $this->load->view('calculate_view'); } } /* End of file calculate.php */ /* Location: ./application/controllers/calculate.php */
[align=left]在上面的代码中,我们可以注意到,我们的类名与文件名同名,但首字母是大写的,这是CI的规则,必须这样做,而且,所有的控制器都必须要继承自CI_Controller类,另外,可以看到,我们在文件结束的地方只有两行注释,并没有PHP的结束标签“?>”,在这里不对此做过多解释,只是CI推荐这样写,如果大家对这点感兴趣,我会在后面的课程中讲到。[/align]
[align=left]在上面的控制器当中加载了一个视图,但是这个视图现在还没有,没关系,现在我们就来动手写这个视图,在views文件夹下新建一个php文件,文件名为calculate_view.php,打开文件,书写具体的代码[/align]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>网页计算器</title> <style type="text/css"> #calculators { margin: 10% auto; width:430px; border:1px solid #000; } </style> </head> <body> <div id="calculators"> <form action="index.php/calculate/count" method="post"> <input type="text" name="num1" id="num1" /> <select name="operate" id="operate"> <option value="+">+</option> <option value="-">-</option> <option value="x">x</option> <option value="÷">÷</option> </select> <input type="text" name="num2" id="num2" /> <input type="submit" value="计算" /> </form> </div> </body> </html>
在上面的表单中,我们的提交路径指向的其实是calculate类中的一个方法,这个方法的名字就是count,关于CI框架路径的规则,我将在下一讲中详细介绍。接下来,我们来书写controller中对应的代码,在calculate控制器中加入如下的函数:
function count() { // 使用输入类接收参数 $num1 = $this->input->post('num1'); $op = $this->input->post('operate'); $num2 = $this->input->post('num2'); if (is_numeric($num1) && is_numeric($num2)) { // 如果两个数输入均为数字,则调用calculate_model模型下的count方法 $result = $this->calculate_model->count($num1, $num2, $op); } }
我们看到在控制器的代码中,调用了calculate_model模型下面的count方法,但是在调用模型之前,控制器必须先要加载函数,所以,需要在控制器的构造函数中,加入如下代码:
// 加载计算模型 $this->load->model('calculate_model');
接下来,我们就按照控制器里面的调用,创建我们的calculate_model模型和count方法,所有的模型都是放在models文件夹下的,所以,我们需要在models文件夹下创建一个名为calculate_model.php的文件,创建好后,我们来书写model端的代码:
<?php /** * 计算模型,类名首字母必须大写,所有的模型必须继承自CI_Model类 */ class Calculate_model extends CI_Model { function __construct() { parent::__construct(); } /* * 计算函数 */ function count($num1, $num2, $op) { if ($op == "+") { return $num1 + $num2; }else if ($op == "-") { return $num1 - $num2; }else if ($op == "x") { return $num1 * $num2; }else if ($op == "÷" && $num2 != 0) { return $num1 / 1.0 / $num2; }else { return FALSE; } } } /* End of file calculate_model.php */ /* Location: ./application/models/calculate_model.php */
现在,已经进行到了模型将计算结果返回给了控制器,还剩最后一步,就构成了一个标准的、完整的MVC框架执行过程,那就是控制器再次加载视图来显示计算结果。我们需要在views文件夹下创建一个视图(PHP文件),取名为result_view.php,代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>网页计算器</title> <style type="text/css"> #calculators { margin: 10% auto; width:430px; border:1px solid #000; } </style> </head> <body> <div id="calculators"> <?php // 从控制器接收数据并对数据进行操作 if (is_numeric($num1) && is_numeric($num2) && $op && $result && $result != FALSE) { echo $num1." ".$op." ".$num2." = ".$result."<br />"; }else { echo "计算错误<br />"; } ?> <a href="/CI_02">返回首页</a> </div> </body> </html>
大家可以注意到,在这个视图中,出现了PHP代码,而且出现了一些变量,这些变量是哪来的呢?这就是今天要讲到的另一个重点,给视图添加动态数据。在视图的使用中,可以通过控制器给视图添加动态数据,这些数据在控制器里都是以数组键值对的形式定义的,在控制器加载视图的同时,数据数组做为参数传递给视图;在视图中,我们只需要知道数据在数组中的键名就可以取到想要的数据。比如,在控制器里定义的数据数组是:
$data = array('num1' => 1, 'num2' => 2, 'op' => +, 'result' => 3);
那么在视图中,只需要知道键名,就可以取得相对应的数据,比如:
echo $num1." ".$op." ".$num2." = ".$result."<br />";
写好了用于显示计算结果的视图,也学会了怎样给视图添加动态数据,现在只需要稍微修改一下前面写好的控制器的count函数,计算结果就可以显示在result_view视图上了,对count函数修改后的代码如下:
function count() { // 使用输入类接收参数 $num1 = $this->input->post('num1'); $op = $this->input->post('operate'); $num2 = $this->input->post('num2'); if (is_numeric($num1) && is_numeric($num2)) { // 如果两个数输入均为数字,则调用calculate_model模型下的count方法 $result = $this->calculate_model->count($num1, $num2, $op); // 生成要传给视图的数据 $data = array('num1' => $num1, 'num2' => $num2, 'op' => $op, 'result' => $result); // 加载视图 $this->load->view('result_view', $data); } }
[align=left]可以看到,上面的代码中,只是将用户输入的数字和操作符以及模型返回的计算结果放入data数组中,然后将数组做为加载视图时的第二个参数,就可以实现在视图中显示计算结果。[/align]
[align=left]看到这里,恭喜你,你已经成功的学会了MVC框架的基本内容,其实一点都不难,在接下来的课程中,我将逐步讲解CI框架中其他类库和辅助函数的使用方法。[/align]
[align=left]总结:今天学习了CI框架的MVC框架的基本内容,到此位置,MVC的基本功能已经实现,下一讲的内容是URI以及使用ajax。[/align]
[align=left] [/align]
[align=left]第二课源代码下载地址:[/align]
[align=left]http://www.softeng.cn/?p=53[/align]
相关文章推荐
- CI(CodeIgniter)框架入门教程——第二课 初始MVC
- 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的
- 【军哥谈CI框架】之入门教程之第一讲:codeigniter的介绍和安装配置
- CI(CodeIgniter)框架入门教程——第一课 Hello World!
- CI(CodeIgniter)框架入门教程——第四课 辅助函数和类库的使用
- Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis
- CI框架入门中的简单MVC例子
- CI框架入门中的简单MVC例子
- 【ci框架】codeigniter框架视频教程_用户权限管理系统完美版
- ionic入门教程第二课-从Tabs案例看Ionic的MVC架构
- ionic入门教程第二课-从Tabs案例看Ionic的MVC架构
- 基于ASP.NET MVC的ABP框架入门学习教程
- CodeIgniter框架入门教程——第三课 URL及ajax
- 基于ASP.NET MVC的ABP框架入门学习教程
- CI框架入门之MVC简单示例
- CodeIgniter框架入门教程——第三课 URL及ajax
- CI框架入门中的简单MVC例子
- CI(CodeIgniter)框架(二)之 CI框架的MVC
- SSM(Spring+SpringMVC+MyBatis)框架快速整合入门教程
- 基于ASP.NET MVC的ABP框架入门学习教程