Php Codeigniter 3条路线和404页
我正在开发一个web应用程序,我对路由及其工作方式有点困惑 我的web应用程序有一个管理区域,URL结构如下Php Codeigniter 3条路线和404页,php,codeigniter,routing,uri,codeigniter-3,Php,Codeigniter,Routing,Uri,Codeigniter 3,我正在开发一个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() {
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);
}
}
但是,当我将/form/
URL段更改为下面这样的随机段时,我仍然可以看到正确的数据
example.com/admin/view/foo/123
- 为什么会这样李>
- 我希望看到404页
- 为了实现我的目标,我需要改变什么
也许我误解了逻辑,应该以不同的方式设置控制器/路由?Codeigiter URL的结构为
domain/controllerName/actionName/param1/param2
等等。在代码URLexample.com/admin/view/form/123
admin
是控制器,view
是动作名称,form
和123
是使用get方法传递的参数。您可以访问这些参数,如$this->uri->segment(3)
因此,在您的代码中:
404
页面,因为它找到了正确的控制器和操作希望它能帮助您澄清此代码 罗希特-米塔尔的回答很好,而且,
您可以在管理控制器中更改视图功能,如下所示:
<?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);
}
}
form
和foo
作为参数传递给您的view()
函数,但由于您的函数不接受任何参数,因此它通过使用$this->uri->segment(4)
仅以一种定义的方式运行。试着做一些类似于查看($action=null)
的事情,然后做一个if($action=='form'){/*do stuff*/}或者{die('not valid!!!');}
另外,如果你做view($action=null,$form\u submission\u id=null)
那么$this->uri->segment(4)
就不需要了。
<?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);
}
}