CodeIgniter 控制器、视图路由:通过示例应用程序学习
在本教程中,您将学习以下主题。
- 路由 – 路由负责响应 URL 请求。路由将 URL 与预定义的路由进行匹配。如果未找到路由匹配,则 CodeIgniter 会抛出页面未找到异常。
- 控制器 – 路由与控制器相连。控制器将模型和视图粘合在一起。从模型请求数据/业务逻辑,并在视图的表示中返回结果。一旦 URL 与路由匹配,它就会被转发到控制器的公共函数。该函数与数据源、业务逻辑交互并返回显示结果的视图。
- 观看数 – 视图负责呈现。视图通常是 HTML、CSS 和 Java脚本。这是负责向用户显示网页的部分。通常,显示的数据通常是从数据库或任何其他可用数据源检索的。
如何创建新的 CodeIgniter 项目
我们将使用 Composer 创建一个新项目。我将使用 PHP 内置服务器,因此不需要额外的软件,例如 Apache (阿帕奇)在本教程中,我们使用 Windows 操作系统。因此,我们在 C 盘上创建了一个 Sites 文件夹。您可以使用任何适合您的目录。
打开命令行/终端并运行以下命令
cd C:\Sites
现在我们将使用 Composer 创建一个 CodeIgniter 项目。运行以下命令
composer create-project CodeIgniter/framework ci-app
这里,
- 上述命令使用最新稳定版本(即 3)在目录 ci-app 中创建一个新的 CodeIgniter 项目版本 3.1.9。
当上述命令运行完成后,你应该能够在终端中看到类似下面的结果
运行以下命令浏览到新创建的项目目录 ci-app
cd ci-app
现在让我们启动 PHP 内置 Web 服务器
php -S localhost:3000
这里,
- 上述命令启动在端口 3000 上运行的内置 PHP 服务器。
打开 Web 浏览器并浏览以下 URL: http://localhost:3000/
您将看到以下页面
如果你能看到上面的页面那么恭喜你,你已经安装成功 笨.
从上面的网页可以看出,上面显示的页面是由位于 application/views/welcome_message.php 的视图呈现的,负责的控制器位于 application/controllers/Welcome.php
CodeIgniter 路由
目前,我们的应用程序只有一个 URL,即主页。在本节中,我们将自定义主页部分。我们将创建一些新的 URL 来响应不同的请求。
让我们从主页路由开始
按照以下路径打开路线文件
application/config/routes.php
你应该能够看到以下内容
$route['default_controller'] = 'welcome'; $route['404_override'] = ''; $route['translate_uri_dashes'] = FALSE;
这里,
- $route['default_controller'] = 'welcome';定义响应 URI 请求的默认控制器
- $route['404_override'] = ”; 此路由允许您为 404 错误定义自定义路由。找不到页面时会发生 404 错误。CodeIgniter 有一个默认的错误处理程序,但如果您愿意,也可以定义自己的处理程序。
- $route['translate_uri_dashes'] = FALSE;此选项允许您将破折号转换为下划线。我们将在查看 CodeIgniter 中的路由工作原理时讨论此选项。
现在让我们看一下负责显示打开 URL 时看到的主页的控制器方法 http://localhost:3000/ 在网络浏览器中。
打开以下文件
application/controllers/Welcome.php
你应该能够看到以下代码
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
这里,
- Defined ('BASEPATH') OR exit('No direct script access allowed'); 防止不经过 index.php 文件而直接访问控制器类。请记住,在 MVC 范例中,所有请求都有一个入口点,而对于 CodeIgniter 来说,入口点是 index.php。此代码会阻止所有未通过 index.php 的请求。
- class Welcome extends CI_Controller {…} 定义一个类 Welcome,它扩展了父类 CI_Controller
- public function index() 定义一个公共函数,当你打开主页时默认调用该函数
- $this->load->view('welcome_message'); 此行加载视图 welcome_message。文件 welcome_message 位于目录 application/views/welcome_message.php 中
到目前为止,我们仅探索了 CodeIgniter 的开箱即用功能,现在让我们尝试进行一些更改。我们将创建主页并替换默认页面
在 application/views/home.php 中创建一个新文件
将以下代码添加到 home.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Hello CodeIgniter!</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
</head>
<body>
<section class="section">
<div class="container">
<h1 class="title">
CodeIgniter Hello World
</h1>
</div>
</section>
</body>
</html>
这里,
上述 HTML 代码加载了 Burma SSS 框架和来自 CDN 网络的字体,创建了一个非常基本的 HTML 文档。它应用了 Burma CSS 框架中非常简单的 CSS 规则。
在浏览器中打开以下 URL: http://localhost:3000/
您应该能够看到以下内容
太好了,我们刚刚成功修改了主页。接下来,让我们定义我们的路线。假设我们的应用程序还需要能够显示关于我们的页面。
创建路线
打开路线文件 application/config.routes.php
添加以下路线
$route['about-us'] = 'welcome/about_us';
这里,
- 当访问者访问 URL /about-us 时,我们指示 CodeIgniter 寻找控制器 Welcome 并执行方法 about_us。
创建控制器
现在让我们定义关于我们的控制器方法
打开应用程序/控制器/Welcome.php
添加以下方法
public function about_us(){
$this->load->view('about_us');
}
这里,
- 上面的代码定义了一个函数about_us,并加载了一个视图about_us。
创建视图
现在让我们创建上一节中引用的视图
在 application/views/about_us.php 中创建一个新文件 about_us.php
添加以下代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>About CodeIgniter!</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
</head>
<body>
<section class="section">
<div class="container">
<h1 class="title">
About us yap...
</h1>
</div>
</section>
</body>
</html>
我们准备好了,在您的网络浏览器中打开以下 URL: http://localhost:3000/index.php/about-us
你会看到以下页面
如果您能够看到上述页面,那么恭喜您,您已经成功在 CodeIgniter 中创建了一个简单的应用程序。
结语
在本教程中,我们介绍了构成 CodeIgniter 应用程序的三个 (3) 个主要组件。我们研究了路由及其定义方法、控制器及其创建响应路由请求的方法,并创建了在用户请求资源时返回给用户的简单视图。




