我正在开发一个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);
}
}
我没有任何自定义路线设置。
当我访问以下URL时,可以成功看到页面和相应的数据;
example.com/admin/view/form/123
但是,当我将/form/
URL段更改为如下所示的随机内容时,我可以仍然查看正确的数据;
example.com/admin/view/foo/123
也许我对逻辑有误解,应该对控制器/路由进行不同的设置吗?
答案 0 :(得分:1)
Codeigiter URL的结构为domain/controllerName/actionName/param1/param2
,依此类推。在您的代码URL中,example.com/admin/view/form/123
admin
是控制器,view
是动作名称,form
和123
是您使用get方法传递的参数。您可以像$this->uri->segment(3)
这样访问这些参数。
因此在您的代码中:
404
页面。希望它可以帮助您阐明此代码。
答案 1 :(得分:0)
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);
}
}