繁体   English   中英

Codeigniter 3 路由和 404 页

[英]Codeigniter 3 Routes and 404 Pages

我正在开发一个 Web 应用程序,但我对路由及其工作方式有些困惑。

我的 Web 应用程序有一个管理区域,URL 结构如下;

example.com/admin/view/form/123

我的Admin控制器看起来像这样;

<?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 页面?
  • 我需要改变什么才能实现我想要的?

也许我误解了逻辑,应该让我的控制器/路由设置不同?

Codeigiter URL 的结构为domain/controllerName/actionName/param1/param2等。 在您的代码 URL example.com/admin/view/form/123 admin是控制器, view是操作名称和form123是您使用 get 方法传递的参数。 您可以访问这些参数,如$this->uri->segment(3)

因此在您的代码中:

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

希望它可以帮助您澄清此代码。

Rohit Mittal 的回答很好,而且,
您可以像这样更改管理控制器中的视图功能:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Admin extends CI_Controller {

public function view($form = null,$form_submission_id = null) {
    if($form == "form" && $form_submission_id){
    $records = $this->Admin_model->getDetails($form_submission_id);
    $data = array(
        'title'         =>  'Form Details',
        'records'       =>  $records
    );
    $this->load->view('admin/view/index', $data);
 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM