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。

当上述命令运行完成后,你应该能够在终端中看到类似下面的结果

创建新的 CodeIgniter 项目

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

cd ci-app

现在让我们启动 PHP 内置 Web 服务器

 php -S localhost:3000

这里,

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

打开 Web 浏览器并浏览以下 URL: http://localhost:3000/

您将看到以下页面

创建新的 CodeIgniter 项目

如果你能看到上面的页面那么恭喜你,你已经安装成功 .

从上面的网页可以看出,上面显示的页面是由位于 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/

您应该能够看到以下内容

CodeIgniter 路由

太好了,我们刚刚成功修改了主页。接下来,让我们定义我们的路线。假设我们的应用程序还需要能够显示关于我们的页面。

创建路线

打开路线文件 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 中创建了一个简单的应用程序。

结语

在本教程中,我们介绍了构成 CodeIgniter 应用程序的三个 (3) 个主要组件。我们研究了路由及其定义方法、控制器及其创建响应路由请求的方法,并创建了在用户请求资源时返回给用户的简单视图。

总结一下这篇文章: