【问题标题】:Codeigniter 3 Routes and Handling 404 ErrorsCodeigniter 3 路由和处理 404 错误
【发布时间】:2019-07-21 08:51:24
【问题描述】:

我正在尝试在 codeigniter 中配置漂亮的 URL,但这对我来说没有多大意义。我希望我的网址遵循以下结构;

example.com/admin/view/form/123

我访问上面的网址可以成功查看数据。我访问时看到相同的数据;

example.com/admin/view/123

注意第 3 段 /form/ 丢失,但仍返回数据。几乎就像它忽略了这一点 - 我认为 CI 应该抛出 404 错误,还是我需要手动检查这个?如果有,怎么做?

当我访问此网址时;

example.com/admin/view

我看到以下错误;

An uncaught Exception was encountered
Type: ArgumentCountError
Message: Too few arguments to function Admin::view(), 0 passed 

我的代码如下所示;

控制器

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

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

    public function index()
        {
        $this->load->view('template/header');
        $data = array(
            'title' => 'Admin Page'
        );
        $this->load->view('admin/index', $data);
        $this->load->view('template/footer');
        }

    public function view($form_submission_id)
        {
        $this->load->view('template/header');
        $data = array(
            'title' => 'Form View Page',
            'record' => $this->Admin_model->getSubmissionById($form_submission_id)
        );
        $this->load->view('admin/view/index', $data);
        $this->load->view('template/footer');
        }
    }

型号

class Admin_model extends CI_Model {

    public function getSubmissionById($form_submission_id) {
        $this->db->select('*');
        $this->db->from('submissions');
        $this->db->where('id', $form_submission_id); 
        $query = $this->db->get();
        return $query->row(); 
    }
}

路线 // 重定向任何在 /form 之后包含数字的 url $route['admin/view/form/(:num)'] = "admin/view/$1";

我的views文件夹结构是这样的;

 - views
 -- admin
     - index.php
     - view
        -- index.php

理想情况下,我希望我的 URL 看起来像这样,并在没有的地方抛出 404 错误。

example.com/admin/view/form/123

example.com/admin/update/form/123

example.com/admin/delete/form/123

【问题讨论】:

    标签: php codeigniter codeigniter-3


    【解决方案1】:

    您可以通过多种方式做到这一点。

    最快的方法是创建这样的路由:

    $route['admin/view/form/(:num)']   = "Admin/view/$1"; 
    

    当输入 example.com/admin/view/form/9 时,它会重定向到控制器 admin,函数视图,“9”将是参数 $form_submission_id

    下面的路线也是如此。

    $route['admin/update/form/(:num)'] = "Admin/update/$1";
    $route['admin/delete/form/(:num)'] = "Admin/delete/$1";
    

    当然你可以为每个函数创建一个函数,查看、更新、删除……等等

    进入example.com/admin/view时看到错误是正常的,因为view函数有1个参数$form_submission_id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 2015-06-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      相关资源
      最近更新 更多