CodeIgniter教程: 基本概念(二)
助手
顾名思义,它将帮助您构建您的系统。它被分成小的功能来服务不同的功能。CodeIgniter中有许多助手,如下表所示。我们也可以建立自己的助手。
助手通常存储在您的system/helpers或 application/helpers目录中,自定义助手存储在 application/helpers目录中,系统助手存储在system/helpers目录中。CodeIgniter将首先在application/helpers目录中查找。如果目录不存在或者指定的帮助程序不存在,CodeIgniter将在您的system/helpers目录中查找。每个助手,无论是自定义还是系统助手,都必须在使用之前加载。
下面给出了最常用的助手。
1.Array Helper:包含有助于使用数组的函数。
2.CAPTCHA Helper:包含帮助创建验证码图像的函数。
3.Cookie Helper:包含帮助使用Cookie的函数。
4.Date Helper:包含帮助您处理日期的函数。
5.Directory Helper:包含帮助处理目录的函数。
6.Download Helper:允许您将数据下载到桌面。
7.Email Helper:为使用电子邮件提供了一些辅助功能。
8.File Helper:包含帮助处理文件的功能。
9.Form Helper:包含帮助处理表单的函数。
10.HTML Helper:包含帮助使用超文本标记语言的功能。
11.Inflector Helper:包含允许您将单词更改为复数、单数、骆驼大小写等的函数。
12.Language Helper:包含帮助处理语言文件的函数。
13.Number Helper:包含帮助您处理数字数据的函数。
14.Path Helper:包含允许您在服务器上使用文件路径的函数.
15.Security Helper:包含与安全相关的功能。
16.Smiley Helper:含允许您管理表情符号的功能。
17.String Helper:包含帮助处理字符串的函数。
18.Text Helper:包含帮助处理文本的功能。
19.Typography Helper:可以帮助您以语义相关的方式格式化文本。
20.URL Helper:包含帮助处理网址的功能。
21.XML Helper:包含有助于处理XML数据的函数。
加载助手
下面的代码用于加载助手:
$this->load->helper('name');
其中name是助手的名称。例如,如果您想加载url助手,那么可以输入:
$this->load->helper('url');
路由
CodeIgniter拥有友好的URI路由系统,因此您可以轻松地重新路由网址。通常,在一个URL字符串和它对应的控制器类/方法之间存在一对一的关系。URI中的片段通常遵循这种模式
your-domain.com/class/method/id/
第一段表示应该调用的控制器类。
第二段表示应该调用的类函数或方法。
第三个,以及任何附加的段,表示将被传递给控制器的标识和任何变量。
在某些情况下,您可能需要更改此默认路由机制。CodeIgniter提供了一种工具,您可以通过它来设置自己的路由规则。
自定义路由规则
有一个特殊的文件可以处理所有这些。该文件位于application/config/routes.php中。您会发现一个名为$route的数组,您可以在其中自定义路由规则。$route数组中的键将决定路由什么,值将决定路由到哪里。CodeIgniter中有三条保留路由。
1.$route['default_controller']:设置默认路由,就是输入网址最初要加载的控制和对应方法。
2.$route['404_override']:如果找不到请求的控制器,此路由指示应该加载哪个控制器类。它将覆盖默认的404错误页面。它不会影响show_404()函数,该函数将加载application/views/errors/error_404.php文件。
3.$route['translate_uri_dashes']:该选项使您能够在控制器和方法URI段中用下划线自动替换破折号(“-”),从而在需要时为您节省额外的路由条目。
路由可以通过通配符或使用正则表达式来定制,但请记住,这些定制的路由规则必须在保留规则之后。
通配符
我们可以使用两个通配符,如下所述
(:num) :它将匹配只包含数字的段.
(:any) :它将匹配包含任何字符的段。
例子
$route['product/:num']='catalog/product_lookup';
在上面的例子中,如果在网址的第一段中找到字面词“product”,而在第二段中找到一个数字,则匹配“catalog”类和“product_lookup”方法。
正则表达式
像通配符一样,我们也可以在$route数组键部分使用正则表达式。如果任何URI与正则表达式匹配,那么它将被路由到值部分集合到$route数组中。
例子
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
在上面的例子中,类似于products/shoes/123的URI将改为调用“shoes”控制器类和“id_123”方法。