php - Codeigniter 3 路由和 404 页面

标签 php codeigniter routes uri codeigniter-3

我正在开发一个网络应用程序,我对路线及其工作方式有点困惑。

我的网络应用程序有一个管理区域,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 是操作名称,form123 是您使用 get 方法传递的参数。您可以访问这些参数,例如 $this->uri->segment(3)

因此在您的代码中:

  1. 它不会显示任何错误,因为您的函数甚至没有使用第三个 URI 段。
  2. 它不会显示 404 页面,因为它找到了正确的 Controller 和操作。
  3. 要实现与域相关的功能,您需要相应地更改功能代码,或者需要为此使用路由。

希望它能帮助您澄清这段代码。

关于php - Codeigniter 3 路由和 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55106503/

相关文章:

php - 单击 laravel/mysql 中的删除按钮后无法删除该行

mysql - 计数: multiple queries or one query with multiple subqueries?

javascript - 相当于 Zend headscript 的 Codeigniter

javascript - 如何为每个指定(node env,express fr)路由发布请求创建可以变异并可通过所有模块使用的全局 obj 实例?

angular - ionic /Angular 嵌套路由器导出 : routerLinks only work once

webserver - auto_prepend_file 多个文件

php - 为什么在引用值上调用函数(如 strlen、count 等)这么慢?

Php ajax 调用相同的 php 脚本响应 null

php - 如何使用 jquery 获取文本字段的值?

javascript - 如何使用路由在 nodejs 应用程序中发布表单数据?