控制器是一个简单的类文件。顾名思义,它通过URI控制整个应用程序。
创建控制器
首先,进入 application/controllers 文件夹。创建一个Test.php文件,在该文件中编写以下代码-
<?php class Test extends CI_Controller { public function index() { echo "Hello Learnfk!"; } } ?>
Test 类扩展了名为 CI_Controller 的内置类。每当您要创建自己的Controller类时,都必须扩展此类。
访问控制器
可以通过URI调用上述控制器,如下所示:
http://www.your-domain.com/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之后,CodeIgniter调用默认方法" index "。
在浏览器中访问第二个URI,得到与上图所示相同的输出。在这里在URI中传递了控制器名称之后的方法名称。由于该方法的名称是" index ",因此得到了相同的输出。
访问浏览器中的第三个URI,无涯教程得到的输出如下图所示。获得方法" hello "的输出,因为在控制器名称之后" hello "作为方法名称。
记住要点
控制器类名大写开头。
方法名小写开头。
请勿使用与父类相同的方法名称,因为它将覆盖父类的函数。
Views视图
视图不能直接调用。来创建一个简单的视图。在 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()方法。
<?php class Test extends CI_Controller { public function index() { $this->load->view('test'); } } ?>
这是上面代码的输出-
以下流程图说明了一切工作原理-
创建模型
模型类存储在 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 | --------------------------------------------------------------- | 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();
如上面代码所示,系统在初始化时自动加载的数组指定的模型。
Helpers 辅助类
顾名思义,它将帮助您构建系统。它分为几个小函数,以提供不同的函数。下表列出了CodeIgniter中提供的帮助程序。
S.N. | Helper Name & Remark |
---|---|
1 |
Array Helper Array Helper文件包含处理数组的函数。 |
2 |
CAPTCHA Helper CAPTCHA Helper文件包含有助于创建CAPTCHA验证码的函数。 |
3 |
Cookie Helper Cookie帮助程序文件包含协助使用Cookie的函数。 |
4 |
Date Helper 日期帮助器文件包含可帮助您处理日期的函数。 |
5 |
Directory Helper 目录帮助器文件包含协助处理目录的函数。 |
6 |
Download Helper 下载帮助器使您可以将数据下载文件。 |
7 |
Email Helper 电子邮件助手提供了一些使用电子邮件的辅助函数。有关更强大的电子邮件解决方案,请参见CodeIgniter的电子邮件类别。 |
8 |
File Helper File Helper文件包含处理文件的函数。 |
9 |
Form Helper 表单帮助器文件包含处理表单的函数。 |
10 |
HTML Helper HTML Helper文件包含协助使用HTML的函数。 |
11 |
Inflector Helper Inflector Helper文件包含允许您将单词更改为复数,单数,驼峰大小写等的函数。 |
12 |
Language Helper 语言帮助器文件包含处理语言文件的函数。 |
13 |
Number Helper Number Helper文件包含帮助您处理数字数据的函数。 |
14 |
Path Helper 路径帮助器文件包含允许您使用服务器上文件路径的函数。 |
15 |
Security Helper 安全帮助程序文件包含与安全相关的函数。 |
16 |
Smiley Helper Smiley Helper文件包含使您能够管理表情(表情符号)的函数。 |
17 |
String Helper 字符串帮助器文件包含协助处理字符串的函数。 |
18 |
Text Helper 文本帮助器文件包含协助处理文本的函数。 |
19 |
Typography Helper Typography Helper文件包含以语义相关的方式帮助您格式化文本的函数。 |
20 |
URL Helper URL Helper文件包含协助使用URL的函数。 |
21 |
XML Helper XML Helper文件包含协助处理XML数据的函数。 |
加载Helper
可以如下所示加载助手:
$this->load->helper('name');
其中名称是助手的名称,如果要加载URL Helper,则可以将其加载为-
$this->load->helper('url');
Routing 路由
CodeIgniter具有用户友好的URI路由系统,因此您可以轻松地重新路由URL。通常,URL字符串与其对应的class/method之间存在一对一的关系。 URI中的段通常遵循此模式-
your-domain.com/class/method/id/
第一段/class/代表应该调用的控制器类。
第二段/method/表示应调用的类函数或方法。
第三和其他任何段均表示ID和将传递给控制器的任何变量。
在某些情况下,您可能需要更改此默认路由机制。 CodeIgniter提供了可用来设置自己的路由规则的工具。
自定义路由
有一个可以处理所有这些文件的文件。该文件位于application/config/routes.php。您会发现一个名为$route的数组,您可以在其中自定义路由规则。 $route数组中的键将决定要路由的内容,而值将决定要路由的位置。 CodeIgniter中有3条保留的路由。
S.N. | Reserved Routes & Remark |
---|---|
1 |
$route ['default_controller'] 默认控制器,如果URL未指定控制器,则调用这个。 |
2 |
$route ['404_override'] 此路由指示如果找不到请求的控制器,则指向404这个默认界面,文件位于application/views/errors/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 "方法。
参考链接
https://www.learnfk.com/codeigniter/codeigniter-basic-concepts.html