- 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 ”方法。