php - Codeigniter 3 路由和处理 404 错误
问题描述
我正在尝试在 codeigniter 中配置漂亮的 URL,这对我来说没有多大意义。我希望我的网址遵循以下结构;
example.com/admin/view/form/123
当我访问上面的 URL 时,我可以成功查看数据。我访问时看到相同的数据;
example.com/admin/view/123
请注意,缺少第 3 段/form/
,但仍返回数据。几乎就像它忽略了这一点 - 我认为 CI 应该抛出 404 错误,还是我需要手动检查这个?如果是这样,怎么做?
当我访问此 URL 时;
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();
}
}
Routes // 重定向任何在 /form $route['admin/view/form/(:num)'] = "admin/view/$1"; 之后包含数字的 url
我的视图文件夹结构如下所示;
- 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
解决方案
您可以通过多种方式做到这一点。
最快的方法是创建这样的路线:
$route['admin/view/form/(:num)'] = "Admin/view/$1";
当输入 example.com/admin/view/form/9 时,它会重定向到控制器管理员,功能视图,“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
推荐阅读
- google-chrome - CSP:Firefox 83 和 Chromium 87 之间的“script-src”区别?
- prolog - Prolog中的反向转换
- spring-boot - 我无法对 Corda Spring Boot 服务器进行 docker 化
- node.js - 需要将源 ip 从 AWS 网关传递给 NodeJS api 应用程序
- python - 如何从以特定字符开头的列表中打印值
- textarea - Apache Royale Jewel TextArea:如何有回车?(文本换行)
- ruby-on-rails - ActionView::SyntaxErrorInTemplate
- react-native - 当 flatlist 在 React Native 中有新项目时运行代码
- c# - C#中矩阵和列向量之间的点乘
- javascript - 如何从 Asp Label.Text 加载航点坐标