我正在开发一个网络应用程序,我对路线及其工作方式有点困惑。
我的网络应用程序有一个管理区域,URL 结构如下;
example.com/admin/view/form/123
我的Admin
Controller 看起来像这样;
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Admin extends CI_Controller {
public function index()
{
$data = array(
'title' => 'Admin Page'
);
$this->load->view('admin/index', $data);
}
public function view() {
$form_submission_id = $this->uri->segment(4);
$records = $this->Admin_model->getDetails($form_submission_id);
$data = array(
'title' => 'Form Details',
'records' => $records
);
$this->load->view('admin/view/index', $data);
}
}
我没有任何自定义路线设置。
当我访问以下网址时,可以成功看到页面和对应的数据;
example.com/admin/view/form/123
但是,当我将 /form/
URL 段更改为如下所示的随机内容时,我仍然看到正确的数据;
example.com/admin/view/foo/123
- 这是为什么?
- 我本想看到 404 页面?
- 为了实现我想要的目标,我需要改变什么?
也许我误解了逻辑,应该以不同的方式设置我的 Controller /路由?
最佳答案
Codeigiter URL 的结构为 domain/controllerName/actionName/param1/param2
等。在您的代码中,URL example.com/admin/view/form/123
admin
是 Controller ,view
是操作名称,form
和 123
是您使用 get 方法传递的参数。您可以访问这些参数,例如 $this->uri->segment(3)
。
因此在您的代码中:
- 它不会显示任何错误,因为您的函数甚至没有使用第三个 URI 段。
- 它不会显示
404
页面,因为它找到了正确的 Controller 和操作。 - 要实现与域相关的功能,您需要相应地更改功能代码,或者需要为此使用路由。
希望它能帮助您澄清这段代码。
关于php - Codeigniter 3 路由和 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55106503/