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

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

  • 路由 – 路由负责响应URL请求。路由将URL与预定义的路由匹配。如果没有找到匹配的路由,CodeIgniter将抛出“未找到页面”异常。
  • 控制器 – 路由与控制器相关联。控制器将模型和视图连接在一起。请求来自模型的数据/业务逻辑,并以视图的形式返回结果。一旦URL与路由匹配,它将被转发到控制器的公共函数。该函数与数据源、业务逻辑交互,并返回显示结果的视图。
  • 视图 – 视图负责演示。视图通常是HTML、CSS和JavaScript的组合。这是负责向用户显示网页的部分。通常,显示的数据是从数据库或任何其他可用数据源检索的。

如何创建新的CodeIgniter项目

我们将使用Composer创建一个新项目。我将使用PHP内置服务器,因此无需额外的软件,例如Apache。在本教程中,我们使用的是Windows操作系统。因此,我们在C盘上创建了一个Sites文件夹。您可以使用任何适合您的目录。

打开命令行/终端并运行以下命令

cd C:\Sites

现在我们将使用Composer创建一个CodeIgniter项目。运行以下命令

composer create-project CodeIgniter/framework ci-app

此处,

  • 上面的命令使用最新的稳定版本(3.1.9)创建了一个CodeIgniter项目版本3,该项目位于ci-app目录中。

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

Create a New CodeIgniter project

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

cd ci-app

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

 php -S localhost:3000

此处,

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

在Web浏览器中打开并浏览以下URL:https://:3000/

您将看到以下页面

Create a New CodeIgniter project

如果您能看到上面的页面,那么恭喜您,您已成功安装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 https://: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代码从CDN网络加载Burma SSS框架和字体,创建了一个非常基础的HTML文档。它应用了Burma CSS框架中非常简单的CSS规则。

在浏览器中打开以下URL:https://:3000/

您应该能看到以下内容

CodeIgniter Routing

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

创建路由

打开路由文件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>

一切就绪,在您的Web浏览器中打开以下URL:https://:3000/index.php/about-us

您将看到以下页面

Create a View in CodeIgniter

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

摘要

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