控制器
控制器是一个简单的类文件。顾名思义,它通过uri控制整个应用程序。
创建控制器
首先,转到 application/controllers 文件夹。您会在那里找到两个文件, index.html 和 welcome.php。这些文件随 codeigniter 一起提供。
保持这些文件原样。在同一路径下创建一个名为" test.php"的新文件。在该文件中写入以下代码:
class test extends ci_controller { public function index() { echo "hello world!"; } }
test 类扩展了一个名为 ci_controller 的内置类。每当您想创建自己的 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"的方法。
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"的输出,因为我们在控制器名称" test"在 uri 中。
要记住的要点
- 控制器类的名称必须以大写字母开头。
- 必须使用小写字母调用控制器。
- 不要使用与父类相同的方法名称,因为它会覆盖父类的功能。
观看次数
这可以是简单或复杂的网页,可以由控制器调用。网页可能包含页眉、页脚、侧边栏等。不能直接调用视图。让我们创建一个简单的视图。在 application/views 下创建一个名为" test.php"的新文件,并将下面给定的代码复制到该文件中。
codeigniter view example codeigniter view example
更改 application/controllers/test.php文件的代码如下所示。
加载视图
可以通过以下语法加载视图:
$this->load->view('name');
其中 name 是正在渲染的视图文件。如果您计划将视图文件存储在某个目录中,那么您可以使用以下语法:
$this->load->view('directory-name/name');
没有必要将扩展名指定为 php,除非使用了 .php 以外的内容。
index() 方法正在调用 view 方法并将"test"作为参数传递给 view() 方法,因为我们已经将 html 编码存储在 下的"test.php"文件中>application/views/test.php.
class test extends ci_controller { public function index() { $this--->load->view('test'); } }
这是上面代码的输出:
以下流程图说明了一切是如何工作的:
模型
模型类旨在处理数据库中的信息。例如,如果您在应用程序中使用 codeigniter 管理用户,那么您必须有模型类,其中包含插入、删除、更新和检索用户数据的函数。
创建模型类
模型类存储在 application/models 目录中。以下代码展示了如何在 codeigniter 中创建模型类。
class model_name extends ci_model { public function __construct() { parent::__construct(); } }
其中 model_name 是您要提供的模型类的名称。每个模型类都必须继承 codeigniter 的 ci_model 类。模型类的第一个字母必须是大写字母。以下是用户模型类的代码。
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 中提供了许多帮助程序,如下表所示。我们也可以构建自己的助手。
helper 通常存储在您的 system/helpers 或 application/helpers 目录中。自定义助手存储在 application/helpers 目录中,系统的助手存储在 system/helpers 目录中。 codeigniter 将首先查看您的 application/helpers 目录。如果该目录不存在或未找到指定的帮助程序,codeigniter 将改为查找您的全局 system/helpers/目录。每个helper,无论是自定义的还是系统的helper,在使用前都必须加载。
名称和描述 |
array helper array helper 文件包含有助于处理数组的函数。 |
captcha helper captcha helper 文件包含有助于创建 captcha 图像的功能。 |
cookie helper cookie helper 文件包含帮助处理 cookie 的函数。 |
date helper date helper 文件包含帮助您处理日期的函数。 |
directory helper directory helper 文件包含有助于处理目录的函数。 |
download helper download helper可让您将数据下载到桌面。 |
email helper email helper 提供了一些使用电子邮件的辅助功能。如需更强大的电子邮件解决方案,请参阅 codeigniter 的电子邮件类。 |
file helper file helper 文件包含有助于处理文件的函数。 |
form helper form helper 文件包含帮助处理表单的函数。 |
html helper html helper 文件包含有助于处理 html 的函数。 |
inflector helper inflector helper 文件包含允许您将单词更改为复数、单数、驼峰式等的功能。 |
language helper language helper 文件包含有助于处理语言文件的函数。 |
number helper number helper 文件包含帮助您处理数字数据的函数。 |
path helper path helper 文件包含允许您使用服务器上的文件路径的函数。 |
security helper security helper 文件包含安全相关的功能。 |
smiley helper smiley helper 文件包含可让您管理笑脸(表情符号)的功能。 |
string helper string helper 文件包含有助于处理字符串的函数。 |
text helper text helper 文件包含有助于处理文本的函数。 |
typography helper typography helper 文件包含的函数可以帮助您以语义相关的方式格式化文本。 |
url helper url helper 文件包含有助于处理 url 的函数。 |
xml helper 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 中保留了三个路由。
reserved routes & description |
$route['default_controller'] 这个路由指示应该加载哪个控制器类,如果uri不包含数据,这将是这种情况人们加载您的根 url。鼓励您使用默认路由,否则默认情况下会出现 404 页面。我们可以在此处设置网站首页,以便默认加载。 |
$route['404_override'] 此路由指示如果未找到请求的控制器,应加载哪个控制器类。它将覆盖默认的 404 错误页面。它不会影响 show_404() 函数,该函数将继续加载 中的默认 error_404.php 文件application/views/errors/error_404.php. |
$route['translate_uri_dashes'] 从布尔值可以看出,这并不完全是一条路线。此选项使您能够在控制器和方法 uri 段中用下划线自动替换破折号 (‘-‘),从而在需要时为您节省额外的路由条目。这是必需的,因为破折号不是有效的类或方法名称字符,如果您尝试使用它,将导致致命错误。 |
可以通过 通配符或使用 正则表达式自定义路由,但请记住,这些自定义路由规则必须在保留规则之后。
通配符
我们可以使用两个通配符,如下所述:
- (:num)-它将匹配仅包含数字的段。
- (:any)-它将匹配包含任何字符的段。
示例
$route['product/:num']='catalog/product_lookup';
在上面的示例中,如果在 url 的第一段中找到文字单词"product",而在第二段中找到数字,则使用"catalog"类和"product_lookup"方法代替。
正则表达式
和通配符一样,我们也可以在 $route array key 部分使用正则表达式。如果任何 uri 与正则表达式匹配,那么它将被路由到设置到 $route 数组中的值部分。
示例
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
在上面的示例中,类似于 products/shoes/123 的 uri 将改为调用" shoes"控制器类和" id_123"方法。