[英]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
也许我误解了逻辑,应该让我的控制器/路由设置不同?
Codeigiter URL 的结构为domain/controllerName/actionName/param1/param2
等。 在您的代码 URL example.com/admin/view/form/123
admin
是控制器, view
是操作名称和form
, 123
是您使用 get 方法传递的参数。 您可以访问这些参数,如$this->uri->segment(3)
。
因此在您的代码中:
404
页面,因为它找到了正确的控制器和操作。希望它可以帮助您澄清此代码。
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.