目录搜索
欢迎目录快速参考图基本信息服务器要求许可协议变更记录关于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
上一篇:下一篇: