CodeIgniter 控制器、视图和路由:通过示例学习

⚡ 智能摘要

本篇 CodeIgniter 示例构建了一个小型应用程序,展示了路由、控制器和视图如何协同工作。使用 Composer 创建了一个新项目,并配置了路由映射。 URLs 到控制器方法,每个方法加载一个视图,该视图将 HTML 返回到浏览器。

  • 🧭 路由: 路线匹配 URL 到控制器方法,以及不匹配的 URL 出现“页面未找到”错误。
  • 🎛️ 控制器: 控制器方法响应路由,请求数据,并返回视图。
  • 🖼️ 浏览次数: 视图结合了 HTML、CSS 和 Java用于向用户显示结果的脚本。
  • 📦 项目设置: Composer 创建项目,内置的 PHP 服务器在本地运行该项目。
  • 🏠 默认路由: default_controller 设置主页,404_override 设置自定义错误页面。
  • 自定义路线: 类似 about-us 的路由映射到 Welcome 控制器的 about_us 方法。
  • 🔁 完整流程: URL 路由到控制器以查看,然后将 HTML 返回到浏览器。

Code点火控制器和视图

在本教程中,您将学习以下主题:

  • 路由 路由负责响应 URL 请求。路由匹配 URL 路由到预定义的路由。如果找不到匹配的路由, CodeIgniter 抛出页面未找到异常。
  • 控制器 路由与控制器相连。控制器将模型和视图粘合在一起。它们从模型请求数据和业务逻辑,并将结果返回到视图的呈现部分。 URL 如果请求已匹配到路由,则会将其转发到控制器的公共函数。此函数会与数据源和业务逻辑交互,并返回显示结果的视图。
  • 观看数 – 视图负责呈现。视图通常是 HTML、CSS 和 Java脚本。这部分负责向用户显示网页。通常,显示的数据是从数据库或其他可用数据源中检索的。

如何创建一个新的 Code点燃者项目

我们将使用 Composer 创建一个新项目。我们将使用 PHP 内置服务器,因此无需额外的软件,例如: Apache (阿帕奇)在本教程中,我们使用 Windows 由于操作系统的原因,我们在 C 盘创建了一个名为“Sites”的文件夹。您可以使用任何适合您的目录。

打开命令行或终端,运行以下命令:

cd C:\Sites

我们现在将创建一个 Code使用 Composer 构建的 Igniter 项目。运行以下命令:

composer create-project CodeIgniter/framework ci-app

这里:

  • 上述命令会创建一个新的 Code使用最新稳定版本(撰写本文时为 3.1.9)的 Igniter 项目版本 3,将其放入名为 ci-app 的目录中。

命令运行完毕后,您应该会在终端中看到类似以下内容的结果:

作曲家正在创建一个新的 Code点燃器项目

运行以下命令浏览到新创建的项目目录 ci-app:

cd ci-app

现在启动 PHP 内置的 Web 服务器:

php -S localhost:3000

这里:

  • 上述命令启动运行在 3000 端口的内置 PHP 服务器。

打开网页浏览器,浏览至以下网址 URL: http://localhost:3000/您将看到以下页面:

CodeIgniter 默认欢迎页面

如果您能看到上面的页面,恭喜您,您已成功安装。 Code点火器该页面由位于 application/views/welcome_message.php 的视图渲染,负责的控制器位于 application/controllers/Welcome.php。

Code点火器路由

目前,我们的应用程序只有一个 URL这就是首页。在本节中,我们将自定义首页部分并创建一些新的内容。 URL对不同请求做出响应。

我们先从首页路由开始。打开以下路径的 routes 文件:

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;` 允许您将连字符转换为下划线。我们将在了解路由工作原理时讨论此选项。 Code点火器。

现在让我们来看看负责显示我们打开页面时看到的首页的控制器方法。 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 模式下,所有请求都只有一个入口点,即 `index.php` 文件。 CodeIgniter 是 index.php。这段代码会阻止所有不通过 index.php 的请求。
  • class Welcome extends CI_Controller {…} 定义了一个继承自父类 CI_Controller 的 Welcome 类。
  • public function index() 定义了一个公共函数,该函数在打开主页时默认调用。
  • $this->load->view('welcome_message'); 加载位于 application/views/welcome_message.php 的视图 welcome_message。

到目前为止,我们只探索了开箱即用的功能。 CodeIgniter。现在让我们做一些修改。我们将创建自己的首页并替换默认页面。在 application/views/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 代码从 CDN 加载 Bulma CSS 框架和 Font Awesome,并创建一个非常基本的 HTML 文档。它应用了 Bulma CSS 框架中的一条简单的 CSS 规则。

打开以下 URL 在您的浏览器中: http://localhost:3000/您应该看到以下内容:

定制化 CodeIgniter 主页

太好了,我们已经成功修改了首页。接下来,让我们定义路由。假设我们的应用程序还需要显示一个“关于我们”页面。

创建路线

打开路由文件 application/config/routes.php,并添加以下路由:

$route['about-us'] = 'welcome/about_us';

这里:

  • 当访客参观时 URL /about-us,我们指示 CodeIgniter 查找名为 Welcome 的控制器并执行 about_us 方法。

创建控制器

现在让我们定义控制器方法 about_us。打开 application/controllers/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 关于我们页面

如果您能看到上面的页面,恭喜您,您已成功创建了一个简单的应用程序。 Code点火器。

常见问题

路线条目映射 URL 将内容分割成控制器和方法,例如“welcome/about_us”。当…… URL 已提出请求, CodeIgniter 运行指定的函数,该函数会加载并返回一个视图。

当没有指定控制器时,它会设置处理站点根目录的控制器。 URL 已给出。在示例中,“welcome”表示首页由Welcome控制器的index方法提供。

不。使用内置的 PHP 服务器(通过 `php -S localhost:3000` 启动)就足以在本地运行示例。Apache 或 Nginx 仅用于生产环境部署。

是的。根据页面描述,AI 可以编写路由条目、控制器方法和匹配的视图,保持页面简洁。ping 名称是否一致。请检查路径是否与您的路径一致。 Code点燃器版本。

这个例子使用 CodeIgniter 3 将控制器和视图存储在 application/ 下。 CodeIgniter 4 重构了目录和命名空间,因此新项目中的路径和语法有所不同。

总结一下这篇文章: