 
- CodeIgniter 教程
- CodeIgniter - 主页
- CodeIgniter - 概述
- CodeIgniter - 安装 CodeIgniter
- CodeIgniter - 应用程序架构
- CodeIgniter - MVC 框架
- CodeIgniter - 基本概念
- CodeIgniter - 配置
- CodeIgniter - 使用数据库
- CodeIgniter - 库
- CodeIgniter - 错误处理
- CodeIgniter - 文件上传
- CodeIgniter - 发送电子邮件
- CodeIgniter - 表单验证
- CodeIgniter - 会话管理
- CodeIgniter - Flashdata
- CodeIgniter - 临时数据
- CodeIgniter - Cookie 管理
- CodeIgniter - 常用函数
- CodeIgniter - 页面缓存
- CodeIgniter - 页面重定向
- CodeIgniter - 应用程序分析
- CodeIgniter - 基准测试
- CodeIgniter - 添加 JS 和 CSS
- CodeIgniter - 国际化
- CodeIgniter - 安全
- CodeIgniter 有用资源
- CodeIgniter - 快速指南
- CodeIgniter - 有用的资源
- CodeIgniter - 讨论
CodeIgniter - 基本概念
控制器
控制器是一个简单的类文件。顾名思义,它通过 URI 来控制整个应用程序。
创建控制器
首先,转到应用程序/控制器文件夹。您会在那里找到两个文件:index.html和Welcome.php。这些文件随 CodeIgniter 一起提供。
保持这些文件原样。在同一路径下创建一个名为“ Test.php ”的新文件。在该文件中写入以下代码 -
<?php 
   class Test extends CI_Controller {
  
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>
Test类扩展了一个名为CI_Controller的内置类。每当您想要创建自己的控制器类时,都必须扩展该类。
调用控制器
上述控制器可以通过 URI 调用,如下所示 -
http://www.your-domain.com/index.php/test
请注意上述 URI 中 index.php 后面的单词“ test ”。这表示控制器的类名。由于我们已经给出了控制器的名称“ Test ”,因此我们在index.php后面写入“ test ”。类名必须以大写字母开头,但是当我们通过 URI 调用该控制器时,需要写小写字母。调用控制器的一般语法如下 -
http://www.your-domain.com/index.php/controller/method-name
创建并调用构造方法
让我们修改上面的类并创建另一个名为“hello”的方法。
<?php 
   class Test extends CI_Controller {  
	
      public function index() { 
         echo "This is default function."; 
      } 
  
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>
我们可以通过以下三种方式执行上述控制器 -
- http://www.your-domain.com/index.php/test
- http://www.your-domain.com/index.php/test/index
- http://www.your-domain.com/index.php/test/hello
在浏览器中访问第一个 URI 后,我们得到如下图所示的输出。正如你所看到的,我们得到了方法“ index ”的输出,即使我们没有将方法的名称传递给 URI。我们在 URI 中仅使用了控制器名称。在这种情况下,CodeIgniter 调用默认方法“ index ”。
 
在浏览器中访问第二个 URI,我们得到与上图所示相同的输出。在这里,我们在 URI 中的控制器名称后面传递了方法名称。由于该方法的名称是“ index ”,因此我们得到相同的输出。
在浏览器中访问第三个 URI,我们得到如下图所示的输出。正如你所看到的,我们得到了方法“ hello ”的输出,因为我们在 URI 中控制器“ test ”的名称后面传递了“ hello ”作为方法名称。
 
需要记住的要点
- 控制器类的名称必须以大写字母开头。 
- 控制器必须用小写字母调用。 
- 不要使用与父类相同的方法名称,因为它将覆盖父类的功能。 
意见
这可以是简单或复杂的网页,可以由控制器调用。网页中可能包含页眉、页脚、侧边栏等。View不能直接调用。让我们创建一个简单的视图。在application/views下创建一个名为“ test.php ”的新文件,并将以下给定的代码复制到该文件中。
<!DOCTYPE html> 
<html lang = "en"> 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>
更改application/controllers/test.php文件的代码,如下所示。
加载视图
可以通过以下语法加载视图 -
$this->load->view('name');
其中 name 是正在渲染的视图文件。如果您计划将视图文件存储在某个目录中,那么您可以使用以下语法 -
$this->load->view('directory-name/name');
没有必要将扩展名指定为 php,除非使用 .php 以外的其他扩展名。
index() 方法调用 view 方法并将“test”作为参数传递给 view() 方法,因为我们已将 html 编码存储在application/views/test.php下的“ test.php ”文件中。
<?php 
   class Test extends CI_Controller { 
	
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>
这是上面代码的输出 -
 
下面的流程图说明了一切是如何工作的 -
 
楷模
模型类旨在处理数据库中的信息。例如,如果您使用 CodeIgniter 来管理应用程序中的用户,那么您必须拥有模型类,其中包含插入、删除、更新和检索用户数据的函数。
创建模型类
模型类存储在application/models目录中。以下代码展示了如何在 CodeIgniter 中创建模型类。
<?php 
   Class Model_name extends CI_Model { 
	
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?> 
其中 Model_name 是您想要提供的模型类的名称。每个模型类必须继承CodeIgniter的CI_Model类。模型类的第一个字母必须大写。以下是用户模型类的代码。
<?php 
   Class User_model extends CI_Model {
	
      Public function __construct() { 
         parent::__construct(); 
      } 
		
   } 
?>
上述模型类必须保存为User_model.php。类名和文件名必须相同。
装载模型
模型可以在控制器中调用。以下代码可用于加载任何模型。
$this->load->model('model_name');
其中 model_name 是要加载的模型的名称。加载模型后,您可以简单地调用其方法,如下所示。
$this->model_name->method();
自动加载模型
在某些情况下,您可能希望在整个应用程序中使用一些模型类。在这种情况下,我们最好自动加载它。
/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();
如上图所示,在数组中传递要自动加载的模型名称,系统将自动加载模型,同时系统处于初始化状态并且可以在整个应用程序中访问。
帮手
顾名思义,它将帮助您构建系统。它被分成小函数来服务不同的功能。CodeIgniter 中提供了许多帮助程序,如下表所列。我们也可以构建自己的助手。
帮助程序通常存储在您的system/helpers或application/helpers 目录中。自定义助手存储在application/helpers目录中,系统的助手存储在system/helpers目录中。CodeIgniter 将首先在您的application/helpers 目录中查找。如果该目录不存在或未找到指定的帮助程序,CodeIgniter 将在您的全局system/helpers / 目录中查找。每个助手,无论是自定义助手还是系统助手,都必须在使用之前加载。
| 序列号 | 助手姓名和描述 | 
|---|---|
| 1 | 数组助手 数组助手文件包含有助于处理数组的函数。 | 
| 2 | 验证码助手 CAPTCHA Helper 文件包含帮助创建 CAPTCHA 图像的函数。 | 
| 3 | cookie助手 Cookie Helper 文件包含协助使用 cookie 的函数。 | 
| 4 | 约会助手 日期助手文件包含可帮助您处理日期的函数。 | 
| 5 | 目录助手 目录帮助程序文件包含有助于处理目录的函数。 | 
| 6 | 下载助手 下载助手可让您将数据下载到桌面。 | 
| 7 | 电子邮件助手 电子邮件助手提供了一些使用电子邮件的辅助功能。有关更强大的电子邮件解决方案,请参阅 CodeIgniter 的电子邮件类。 | 
| 8 | 文件助手 文件帮助程序文件包含辅助处理文件的函数。 | 
| 9 | 表单助手 表单助手文件包含有助于处理表单的函数。 | 
| 10 | HTML 帮助程序 HTML 帮助程序文件包含有助于使用 HTML 的函数。 | 
| 11 | 偏转器助手 Inflector Helper 文件包含允许您将单词更改为复数、单数、驼峰式大小写等的函数。 | 
| 12 | 语言助手 语言帮助程序文件包含有助于处理语言文件的函数。 | 
| 13 | 号码助手 Number Helper 文件包含可帮助您处理数字数据的函数。 | 
| 14 | 路径助手 路径帮助程序文件包含允许您使用服务器上的文件路径的函数。 | 
| 15 | 安全助手 安全帮助程序文件包含与安全相关的函数。 | 
| 16 | 笑脸助手 笑脸助手文件包含可让您管理笑脸(表情符号)的函数。 | 
| 17 号 | 字符串助手 字符串助手文件包含有助于处理字符串的函数。 | 
| 18 | 文本助手 文本帮助程序文件包含辅助处理文本的函数。 | 
| 19 | 排版助手 Typography Helper 文件包含可帮助您以语义相关的方式设置文本格式的函数。 | 
| 20 | 网址助手 URL 帮助程序文件包含有助于处理 URL 的函数。 | 
| 21 | XML助手 XML Helper 文件包含有助于处理 XML 数据的函数。 | 
加载助手
可以加载助手,如下所示 -
$this->load->helper('name');
其中 name 是帮助者的名字。例如,如果您想加载 URL Helper,则可以将其加载为 -
$this->load->helper('url');
路由
CodeIgniter具有用户友好的URI路由系统,使您可以轻松地重新路由URL。通常,URL 字符串与其对应的控制器类/方法之间存在一对一的关系。URI 中的段通常遵循以下模式 -
your-domain.com/class/method/id/
- 第一段表示应调用的控制器类。 
- 第二段表示应该调用的类函数或方法。 
- 第三个段以及任何其他段表示 ID 和将传递到控制器的任何变量。 
在某些情况下,您可能想要更改此默认路由机制。CodeIgniter 提供了一些工具,您可以通过它来设置自己的路由规则。
自定义路由规则
有一个特定的文件,您可以在其中处理所有这些。该文件位于 application/config/routes.php。您将找到一个名为 $route 的数组,您可以在其中自定义路由规则。$route 数组中的键将决定路由什么,值将决定路由到何处。CodeIgniter 中保留了 3 个路由。
| 序列号 | 预留路线及说明 | 
|---|---|
| 1 | $route['default_controller'] 如果 URI 不包含数据(当人们加载您的根 URL 时就会出现这种情况),此路由指示应加载哪个控制器类。建议您使用默认路由,否则默认情况下会出现 404 页面。我们可以在这里设置网站的主页,这样它就会默认加载。 | 
| 2 | $路线['404_override'] 该路由指示如果未找到所请求的控制器,则应加载哪个控制器类。它将覆盖默认的 404 错误页面。它不会影响show_404()函数,该函数将继续加载application/views/errors/error_404.php中的默认error_404.php文件。 | 
| 3 | $route['translate_uri_dashes'] 从布尔值可以明显看出,这并不完全是一条路线。此选项使您能够在控制器和方法 URI 段中自动将破折号(“-”)替换为下划线,从而在需要时节省额外的路由条目。这是必需的,因为破折号不是有效的类或方法名称字符,如果您尝试使用它,将会导致致命错误。 | 
可以通过通配符或使用正则表达式来自定义路由,但请记住,这些自定义的路由规则必须位于保留规则之后。
通配符
我们可以使用两个通配符,如下所述 -
- (:num) - 它将匹配仅包含数字的段。 
- (:any) - 它将匹配包含任何字符的段。 
例子
$route['product/:num']='catalog/product_lookup';
在上面的示例中,如果在 URL 的第一段中找到文字“product”,并且在第二段中找到数字,则改用“catalog”类和“product_lookup”方法。
常用表达
与通配符一样,我们也可以在$route 数组关键部分使用正则表达式。如果任何 URI 与正则表达式匹配,那么它将被路由到 $route 数组中设置的值部分。
例子
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
在上面的示例中,类似于 products/shoes/123 的 URI 将调用“ shoes ”控制器类和“ id_123 ”方法。