Code点燃器路线: URL 路由示例

⚡ 智能摘要

Code点火器 URL 路线图 URL 路由指向控制器和方法,并带有一个可选参数。路由在 routes.php 中定义,因此需要保持简洁。 URL 例如 contacts/edit/1 运行 Contacts 控制器的 edit 方法,该方法加载页眉、内容和页脚视图。

  • 🧭 核心规则: 路线匹配 URL 到控制器、方法和可选参数。
  • 📐 分子式: 该模式为 Controller/Method/Parameter,定义在 application/config/routes.php 中。
  • 🏠 默认路由: default_controller 在无默认控制器时设置主页。 URL 已给出片段。
  • 🔢 参数: 例如 edit/:id 这样的路由会将 id 值传递给控制器​​方法。
  • 🎛️ 控制器: 每条路由都映射到一个加载匹配视图的方法。
  • 🖼️ 共同观点: 页眉和页脚视图可以重复使用,每个操作都有一个特定的中间视图。
  • 404 处理: 无与伦比 URL 引发页面未找到异常,可通过 404_override 进行覆盖。

Code点燃器路线

是什么 Code点燃器路线?

路线负责响应 URL 请求。路由匹配 URL 路由到预定义的路由。如果找不到匹配的路由, CodeIgniter 抛出页面未找到异常。

路线 Code点火器使用以下公式定义:

example.com/Controller/Method/Parameter/

这里:

  • 控制器映射到应该响应的控制器名称 URL.
  • 方法映射到控制器中应该响应 URI 请求的方法。
  • 参数——此部分是可选的。

CodeIgniter路由示例

现在让我们来看一个实际的例子。 URL 路由 Code点火器 例如,考虑以下情况。 URL: http://localhost:3000/contacts/edit/1

这里:

  • 响应上述请求的控制器的名称 URL 是“联系人”。
  • 控制器类 Contacts 中的方法是“edit”。
  • edit 方法接受一个参数。在我们的示例中,传递给该方法的参数值为“1”。

以下是我们计划做的简要背景:

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

为了学习如何在实际项目中实现路由,我们假设正在创建一个用于管理联系人信息的应用程序。下表显示了…… URL我们将与以下人员合作。

S / N URL 路线 控制器 付款方式
1 / $route['默认控制器'] 欢迎来到大巨龙 指数
2 /联系人 $route['联系人'] 联系方式 指数
3 /联系人/创建 $route['创建'] 联系方式 创建信息图
4 /联系人/编辑/id $route['编辑/:id'] 联系方式 编辑
5 /联系人/更新/id $route['更新/:id'] 联系方式 更新
6 /联系人/删除/id $route['删除/:id'] 联系方式 删除

我们将根据上表创建应用程序的路由。我们已经定义了…… URLs时, CodeIgniter路由,并将它们映射到相应的控制器和方法名称。

创造 URL 应用程序路由

让我们一起创造 Code点火器 URL 为我们的教程项目配置路由。打开 application/config/routes.php 文件,并修改路由配置以匹配以下内容:

$route['default_controller'] = 'welcome';
$route['contacts'] = 'contacts';
$route['create'] = 'contacts/create';
$route['edit/:id'] = 'contacts/edit';
$route['update/:id'] = 'contacts/update';
$route['delete/:id'] = 'contacts/delete';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

这里:

  • $route['default_controller'] = 'welcome'; 定义默认控制器 Welcome。
  • $route['contacts'] = 'contacts'; 定义了一个联系人路由,该路由调用 Contacts 控制器中的 index 方法。
  • $route['create'] = 'contacts/create'; 定义了一个指向 Contacts 控制器的 create 路由,并调用了 create 方法。
  • $route['edit/:id'] = 'contacts/edit'; 定义了一个路由编辑,该路由接受一个 id 参数,并指向 Contacts 控制器的 edit 方法。
  • $route['update/:id'] = 'contacts/update'; 定义了一个路由更新,它接受一个 id 参数,并指向 Contacts 类的 update 方法。
  • $route['delete/:id'] = 'contacts/delete'; 定义了一个删除路由,该路由接受一个 id 参数,并指向 Contacts 控制器的 delete 方法。

下表显示了各自的 URLs 由上述定义的路线推导而来:

S / N 路线 相应 URL
1 $route['default_controller'] = '欢迎'; http://localhost:3000
2 $route['contacts'] = '联系人'; http://localhost:3000/contacts
3 $route['创建'] = '联系人/创建'; http://localhost:3000/contacts/create
4 $route['编辑/:id'] = '联系人/编辑'; http://localhost:3000/contacts/edit/1
5 $route['更新/:id'] = '联系人/更新'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = '联系人/删除'; http://localhost:3000/contacts/delete/1

现在我们已经了解了路由,接下来让我们创建 Contacts 控制器,它将响应路由中指定的操作。在 application/controllers/Contacts.php 目录下创建一个名为 Contacts.php 的新文件,并添加以下代码:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Contacts extends CI_Controller {

public function __construct() {
parent::__construct();
$this->load->helper('url');
}

public function index() {
$this->load->view('header');
$this->load->view('contacts/index');
$this->load->view('footer');
}

public function create() {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
}

public function edit($id) {
$this->load->view('header');
$this->load->view('contacts/edit');
$this->load->view('footer');
}

public function update($id) {
$this->load->view('header');
$this->load->view('contacts/update');
$this->load->view('footer');
}

public function delete($id) {
$this->load->view('header');
$this->load->view('contacts/delete');
$this->load->view('footer');
}
}

这里:

  • class Contacts extends CI_Controller {…} 定义了我们的控制器类,并继承了 CI_Controller 类。 Code点火器。
  • 上面定义的方法对应于我们定义的路由,而像 delete 这样的带有参数的方法接受 $id 参数。
  • 请注意,这些函数会加载三个视图。页眉和页脚是所有方法通用的。中间的视图则特定于某个操作,例如,删除函数使用“删除”视图,创建函数使用“创建”视图。另一点需要注意的是,这些视图是从 contacts 子目录加载的。

Code点燃器视图

在测试我们的产品之前,我们还需要完成最后一步。 Code在 Web 浏览器中使用带参数的 Igniter 路由。让我们创建与上述控制器方法对应的视图。下图展示了应用程序的大致外观:

CodeIgniter联系人应用程序预览

在 application/views 目录下创建以下文件:

header.php – this file will contain the contacts app menu and the header
footer.php – this file will contain the application footer

在 application/views 目录下创建一个名为 contacts 的新目录(application/views/contacts),并在该目录中创建以下文件:

index.php
create.php
edit.php

您的文件结构应如下所示:

CodeIgniter 查看文件结构

现在让我们更新 header.php 文件:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CodeIgniter Routes</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">CI Contacts v1</h1>
<h2 class="subtitle">CodeIgniter contacts management app</h2>
<div class="columns">
<div class="column is-one-quarter">
<aside class="menu">
<p class="menu-label">
General
</p>
<ul class="menu-list">
<li><a class="is-active" href="#">Dashboard</a></li>
<li><a href="<?=site_url('contacts/create')?>">New Contact</a></li>
<li><a href="<?=site_url('contacts/edit/1')?>">Edit Contacts</a></li>
</ul>
<p class="menu-label">
Settings
</p>
<ul class="menu-list">
<li><a href="#">SMS</a></li>
<li><a href="#">Email</a></li>
</ul>
</aside>
</div>

这里:

  • 上面的 HTML 代码从 CDN 加载 Bulma CSS。

以下是 footer.php 文件的代码:

</div>
</div>
</section>
</body>
</html>

现在让我们添加联系人相关的 index.php、edit.php 和 create.php 文件的代码:

index.php
<div class="column">Index content goes here...</div>
edit.php
<div class="column">Edit content goes here...</div>
create.php
<div class="column">Create content goes here...</div>

您可以保存所有更改。打开以下文件。 URL 在您的网络浏览器中: http://localhost:3000/contacts/您可以点击“新建联系人”和“编辑联系人”链接,看看会发生什么。

常见问题

使用占位符(例如 edit/:id)定义路由,并在控制器方法中接受匹配的参数,例如 edit($id)。 Code点火器传递 URL 将此论点插入到该论点中。

CodeIgniter 抛出页面未找到异常并显示 404 页面。您可以将 404_override 指向您自己的控制器,以便显示自定义错误页面。

site_url() 构建一个完整的 URL 通过您的 base_url 和路由,即使网站移动或基本路径更改,链接也能正常工作。它需要 URL 首先加载辅助函数。

是的。AI 可以根据诸如“联系人”之类的资源名称,生成索引、创建、编辑、更新和删除路由,并根据 REST 规范提供相应的控制器方法。请确认参数名称。

分别加载页眉和页脚可以避免在每个页面视图中重复相同的布局。每种方法都会先加载共享的页眉,然后加载特定的内容视图,最后加载共享的页脚。

总结一下这篇文章: