一、ci安装与配置
1、下载
下载地址:http://codeigniter.org.cn/user_guide/installation/downloads.html
1:解压压缩包,然后将文件夹的内容全部上传到服务器上的web根目录,如/www/web/
2:找到application/config/config.php,设置网站根目录:
$config['base_url'] = '';
2、数据库连接
如果你打算使用数据库,打开 application/config/database.php 文件设置数据库参数。
二、路由
1、url
在 CI 框架中,一个 URL 和它对应的控制器中的类以及类中的方法是一一对应的,如:www.test.com/user/info/zhaoyingnan
其中 user 对应的就是控制器中的 user 类,而 info 则对应 user 类中的 info 方法,zhaoyingnan 则是传递的参数
2、自定义路由规则
如果我不想用www.test.com/user/info/zhaoyingnan 这个URL,而是改成 www.test.com/member/zhaoyingnan,
此时就需要一个自定义的路由规则,当 URL 地址为
www.test.com/member/zhaoyingnan 的时候,实际请求的应该是
www.test.com/user/info/zhaoyingnan
在这里,我推荐使用的正则表达式,其他方法不提:首先找到配置路由规则的文件:application/config/routes.php
/**
* @author zhaoyingnan
* 自定义路由规则
**/
$route['member/(\w+)/?$'] = 'user/info/$1';
3、ci重定向
三、视图
1、视图创建
视图的目录是application/views
2、控制器中视图的加载
$this->load->view('template',$date);
3、加载多个视图
如果有多个调用,那么他们将会被合并到一起:
例如,你可能希望有一个标题视图、一个菜单视图、一个内容视图、和一个页脚视图。
function index()
{
$data['page_title'] = 'Your title';
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data); //这里调用content模板的同时,将变量分配给了视图文件
$this->load->view('footer');
}
4、向视图添加动态数据
调用模板的同时赋值给视图:将控制器的数据添加到视图的时候,可以是任意的基本数据类型,和复合数据类型,对象或者数组都支持
$data = array();
$data['test'] = array();
$this->load->view('show.html', $data);
页面需要echo $test而不是 $data
5、将视图作为数据返回
view函数第三个可选参数可以改变函数的行为,它让视图作为字符串返回 而不是显示到浏览器中,这在你想对视图数据做某些处理时很有用。如果你将该参数设置为 TRUE , 该方法返回字符串,默认情况下为 FALSE ,视图将显示到浏览器。如果你需要返回的数据, 记住将它赋值给一个变量:
$buffer = $this->load->view('blogview', $data, true);
view方法中的第三个参数表示不输出视图,而只是将结果返回给一个变量。
6、视图中的标签——没有标签,使用php语法。
<?php foreach ($productList as $item):?>
<tr>
<td><?php echo $item['title'];?></td>
<td><?php echo $item['type_name'];?></td>
<td><?php echo $item['price'];?></td>
<td><?php echo $item['img'];?></td>
<td><?php echo $item['describe'];?></td>
<tr>
<?php endforeach;?>
四、CI中的load理解
load实际上是Controller的一个成员。
CI_controller初始化的时候(system/core/Controller.php):
$this->load =& load_class('Loader', 'core');
在controller类中调用common类中的load_class载入了loader文件,然后new了
一个loader核心类的实例,并把该实例对象赋值给$this->load,所以通过$this->load来调用loader核心类中的方法;
换句话说,load实际上是Loader的实例,它是ci的加载器,主要负责CI的类库的加载,例如:
$this->load->library() //加载核心类
$this->load->model() //加载模型
$this->load->view() //加载视图文件
五、模型的使用
1、模型创建
模型存放目录:application/models/
1:创建model就是创建一个类文件,model必须继承数据核心类CI_Model,同时重载父类中的构造方法:
class Model名 extends CI_Model //Model名必须和文件名相同; |
Model名第一个字母必须大写;
2:如何在模型中使用Active Record 类中的方法:
$this->db->方法名(参数) |
2、模型映射表设置
$this->load->database();//实例化db属性 |
在实例化db之后,可以运用该对象的丰富的函数来对数据库进行查改删增的操作。
3、控制器中调用模型
$this->load->model(模型名) $this->模型名->方法名 //因为是模型名,所以一个控制器中可加载多个模型 |
也可以在控制器构造函数中统一加载
class Shop extends MY_Wx_Controller {
public function __construct() {
parent::__construct();
$this->load->model('shop_model', 'shop'); //第二个参数是模型的别名
$this->load->model('department_model', 'department');
}
}
4、模型中对数据操作
http://www.php.cn/php-weizijiaocheng-403586.html
5、CI 多表关联查询
方法一:
$this->db->query("sql语句");//直接写sql语句 |
方法二:
#多表关联查询 $data=$this->db->from('goods') ->join('shop','shop.shopid=goods.shopid') ->join('category','category.cid=goods.cid') ->join('locality','locality.lid=goods.lid') ->get()->result_array(); return $data; |