目录 搜索
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于CodeIgniter 安装 下载 CodeIgniter 安装指导 从老版本升级 疑难解答 介绍 开始 CodeIgniter 是什么? CodeIgniter 速记表 支持特性 应用程序流程图 模型-视图-控制器 架构目标 教程 内容提要 加载静态内容 创建新闻条目 读取新闻条目 结束语 常规主题 CodeIgniter URL 控制器 保留字 视图 模型 辅助函数 使用 CodeIgniter 类库 创建你自己的类库 使用 CodeIgniter 适配器 创建适配器 创建核心系统类 钩子 - 扩展框架的核心 自动装载资源 公共函数 URI 路由 错误处理 缓存 调试应用程序 以CLI方式运行 管理应用程序 处理多环境 PHP替代语法 安全 开发规范 类库参考 基准测试类 日历类 购物车类 配置类 Email 类 加密类 文件上传类 表单验证详解 FTP 类 图像处理类 输入类 Javascript 类 语言类 装载类 迁移类 输出类 分页类 模板解析器类 安全类 Session 类 HTML 表格类 引用通告类 排版类 单元测试类 URI 类 User-Agent 类 表单验证 XML-RPC 和 XML-RPC 服务器 Zip 编码类 缓存适配器 适配器参考 适配器 数据库类 Active Record 类 数据库缓存类 自定义函数调用 数据库配置 连接你的数据库 数据库快速入门例子代码 字段数据 数据库维护类 查询辅助函数 数据库类 查询 生成查询记录集 表数据 事务 数据库工具类 JavaScript类 辅助函数参考 数组辅助函数 CAPTCHA 辅助函数 Cookie Helper 日期辅助函数 目录辅助函数 下载辅助函数 Email 辅助函数 文件辅助函数 表单辅助函数 HTML辅助函数 Inflector 辅助函数 语言辅助函数 数字辅助函数 路径辅助函数 安全辅助函数 表情辅助函数 字符串辅助函数 文本辅助函数 排版辅助函数 URL 辅助函数 XML 辅助函数
文字

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

教程 - 创建新闻条目

现在你已经知道了怎样用CodeIgniter从数据库中读取数据,但还不知道怎样往数据库中写入数据。在这一节中,你将学到通过怎么扩展之前写过的新闻控制器和数据模型来实现这一功能。

创建一个表单

为了向数据库里输入数据,你需要创建一个表单来输入需要被存储的信息。这就是说你需要一个带两个输入域的表单,一个用来输入标题,一个用来输入内容。另,你可以通过数据模型中的标题来取得slug。在 application/views/news/create.php 创建一个新的视图。

这里只有两个东西可能你不熟悉,一个是 form_open() 函数,一个是 validation_errors() 函数。

第一个由 表单辅助函数 提供,用来提供表单元素和一些额外功能,例如添加隐藏的 安全类。第二个用来报告表单验证中出现的错误信息。

回到新闻控制器,在这里你需要做两件事,一件是检查表单是否被提交了,另一件是检查提交的数据是否能够通过验证规则。你需要用到 表单验证 库来做这些。

public function create()
{
  $this->load->helper('form');
  $this->load->library('form_validation');
  
  $data['title'] = 'Create a news item';
  
  $this->form_validation->set_rules('title', 'Title', 'required');
  $this->form_validation->set_rules('text', 'text', 'required');
  
  if ($this->form_validation->run() === FALSE)
  {
    $this->load->view('templates/header', $data);  
    $this->load->view('news/create');
    $this->load->view('templates/footer');
    
  }
  else
  {
    $this->news_model->set_news();
    $this->load->view('news/success');
  }
}

上面的代码中添加了一些功能,前几行载入了表单辅助函数和表单验证库,这样,表单验证的规则就被设定好了。 set_rules() 方法包含三个参数,第一个是输入域的名称,第二个是错误信息的名称,第三个是错误信息的规则——在这里的规则是输入内容的文本域必填。

正如上面所展示的,CodeIgniter拥有一个强大的表单验证库。你可以 从这里了解到这个库的更多内容。

继续,你会看到一个用来检查表单验证是否运行成功的条件。如果没有成功,显示表单,如果提交成功并且通过了验证,则会调用数据模型。这之后会加载一个显示成功信息的视图。在这里 application/view/news/success.php 创建一个新的视图用来显示成功信息。

数据模型

现在只剩一件事要做了,那就是写一个方法用来向数据库中写入数据。你将用到Acitve Record类来插入信息,并用到输入类来获得post数据。打开之前创建的数据模型加入下面的代码:

public function set_news()
{
  $this->load->helper('url');
  
  $slug = url_title($this->input->post('title'), 'dash', TRUE);
  
  $data = array(
    'title' => $this->input->post('title'),
    'slug' => $slug,
    'text' => $this->input->post('text')
  );
  
  return $this->db->insert('news', $data);
}

这个新的方法是用来维护向数据库插入新闻条目的。第三行包含了一个新的函数url_title()。这个函数是由 URL辅助函数 提供的,用来组织(strips down)你输入的字符串,将空格的地方替换成横线(-),确保其中全都是小写字母。这样之后剩下的就是一个漂亮的slug,可以很好地用来创建URI。

我们来继续准备一会儿要向$data数组输入的记录。这里的每个元素都对应着早前创建的数据表中的每一列。你可能注意到了这里有个新的方法叫 post() ,它是由 输入类提供的。这个方法可以确保数据是被过滤过(sanitized)的,从而保护你不被其他人恶意攻击。这个输入类是默认加载的。最后,就是将 $data 数组插入到我们的数据库。

设置路由

在你向你的CI程序添加新闻条目之前,你还要向 config/routes.php 里添加一个额外的规则。确保你的文件包含下列代码。这样可以保证CodeIginter将“create”看做一个方法来正确显示,而不是把它显示成一个slug为“create”的新闻页面。

$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';

现在在你的浏览器输入你本地CI程序的地址并在后面加上 index.php/news/create 。恭喜你,你刚刚完成了你的第一个CI程序!添加些新闻来看看其他你创造的其他页面吧!

 

翻译贡献者: Hex, irini
最后修改: 2012-03-06 14:22:31
上一篇: 下一篇: