php的ci框架从入门到精通

来源:互联网 发布:java ftp上传图片损坏 编辑:程序博客网 时间:2024/05/07 23:06

简单了解

。一个应用程序框架

。免费的、轻量、快速、功能强大

。基于M-V-C模型

。生成干净的URL( 便于优化 )

。扩展性强

。不需要模板引擎( 目标是性能最大化,选择不适用模板引擎 )

。拥有一个友好的中文用户社区


MVC介绍

。模型( Model )

提供增、删、改、查数据库资料这些功能

。视图( View )

负责提供展示给用户页面共功能

。控制器( Controller )

是模型、视图以及其他任何处理 的中介


下载CI框架

。application 文件夹存放的都是用户信息,我们着重看里面的三个文件夹,分别是 MVC

。index.php是入口文件


URL片段

。example.com/index.php/test/index

。第一部分(test):控制器

。第二部分( index ):方法、动作

创建一个自己的控制器

在controllers创建 home.php
<?php//  这句话的意思是检测一个常亮是否定义,没有定义代表没有访问单入口,所以输出‘无权访问文件夹’defined('BASEPATH') OR exit('No direct script access allowed');/***  注意事项*  1. 类名和文件名字保持一致,Home要大写,继承CI_Controller*/class Home extends CI_Controller{public function index(){echo 'hello cherish'}
public function world(){echo 'hello world';}}
。访问  example.com/index.php/home/index   /   example.com/index.php/home/world  ( 如果第二部分为空,默认为index )


配置默认控制器

你会发现默认访问的控制器是 welcome.php, 不是我们写的home.php, 那怎么默认访问自己的控制器呢? 配置如下:

在 application文件夹下的 config文件夹 找到 routes.php  改动一行

$route['default_controller'] = 'welcome';  改成:  $route['default_controller'] = 'home';

载入视图

在控制器中: 

$this -> load -> view( 'file_name' );

注意:.php文件的扩展名没有必要专门写,直接写视图的文件名就可以了,除非你使用了其他的扩展。

public function index(){$this->load->view( 'home' );}

注意要在 views下新建一个 home.php文件; 还可以载入多个视图


给视图分配数据

在控制器 home.php中

public function index(){//  data 数据所有的视图中都可以接收到,不仅仅是 home.php$data['title'] = '我是标题';// 数组的形式传递数据$data['name'] = array('name' => 'cherish','age' => '22','sex' => 'girl');$this->load->view( 'home', $data );$this->load->view( 'head' );}
在视图 home.php 或者 head.php中:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><?php echo $title; ?><hr>这个是home.php文件<hr><?php foreach( $name as $key => $v ): ?><span><?php echo $v ?></span><?php  endforeach;?></body></html>

辅助函数

1.在控制器中手动载入

$this->load->helpers('name');

2.自动载入

application/config/autoload.php  找到

$autoload['helper'] = array('name');

url辅助函数

按照以上两种方法之一 载入URL函数,

$autoload['helper'] = array('url');

然后就可以使用这三个辅助函数:

1.site_url():  获得url参数

2.base_url() : application/config/config.php设置的路径

3.redirect( ‘控制器名/方法名’ ): 跳转

sit_url 和 base_url 区别: 

假如你config文件里面的base_url和index_page是这样定义的:

config['base_url'] = "http://domain.com/";

config['index_page'] = "index.php";

那么你若使用site_url("news/php/2");则实际url为

http://domain.com/index.php/news/php/2

若使用base_url("news/php/2");则url为:

http://domain.com/news/php2 

表单验证流程:

1.载入验证类 

$this->load->library( 'form_validation' );
2.设置规则

$this->form_validation->set_rules( 'name值','报错信息','规则' );

3.执行验证( 返回bool值 )

$this->form_validation->run();

表单验证辅助函数

加载表单辅助函数(这样才可以用):

 $this->load->helper( 'form' );

  • set_value( 'name' ); //重填数据 ,就算验证错误,里面的内容还是存在的
  • form_error( 'name', ' <span> ', ' </span> ');//显示错误信息
  • set_select();
  • set_checkbox();
  • set_radio( 'name值', '  value值 ', TRUE );// true 默认选择哪个
例子:
新建一个文件夹 admin下有 article.php 控制器:
<?php  class Article extends CI_Controller{ // 发表模板 public function index(){ // 载入表单辅助函数 $this->load->helper( 'form' ); // 加载视图 $this->load->view( 'admin/add.html' ); } // 发表文章动作 public function send(){ // 载入表单验证类 $this->load->library( 'form_validation' ); // 设置规则 $this->form_validation->set_rules( 'title', '文章标题', 'required|min_length[5]' );
$this->form_validation->set_rules( 'type' '类型', 'required|integer' );
 // 执行验证 $status = $this->form_validation->run();  if($status){ echo '数据库操作'; }else { $this->load->view( 'admin/add.html' ); } } }

视图 add.html:
<form method="post" class="form-x" enctype="multipart/form-data" action="<?php echo site_url('admin/article/send') ?>">        <div class="form-group">        <div class="form">          <label>标题:</label>          <input type="text" class="input w50" value="<?php echo set_value('title'); ?>" name="title" />          <?php echo form_error('title', '<span>', '</span>') ?>        </div>
 <div class="form">          <label>类型:</label>          <input type="radio"  value="0" name="type" <?php echo set_radio('type', '0', TRUE); ?> />普通
  <input type="radio"  value="1" name="type" <?php echo set_radio('title', '1'); ?> />热门
</div>
</div></form>
ci汉化包
你会发现错误信息是英文提示的,可以网上下载汉化包,放在 application > language 中;然后找到 config.php  找到这一行 
$config['language']= '  English '; // 默认英文,可以把它替换成你的汉化包的名字;
 



0 0