当我使用uri段2和3时,它可以工作,但是当我添加uri段4时,它就不起作用了。
URL应该像这样... http://localhost/maruf/written-qb/bcs/44th-bcs-english/how-has-the-phrase-digital-detox-been-explained-in-the-passage?
但是它显示为... http://localhost/maruf/written-qb/bcs/how-has-the-phrase-digital-detox-been-explained-in-the-passage?而且两个URL都显示404。
这是我的路由设置。
>
$route['writing-qb/(:num)'] = 'writing-qb'; //作品 $route['书面qb/(:any)/(:any)'] = '书面qb/书面_qb_details/$1/$2'; //作品 $route['书面qb/(:any)/(:any)/(:any)'] = '书面qb/writing_qb_answer/$1/$2/$3'; // 不起作用
我的控制器是...
公共函数index(){ $data['qb_list'] = $this->Question_bank_model->get_qb_with_category(FALSE); //页脚数据 $data['main_content'] = 'writing_qb'; $this->load->view('include/template',$data); } // 工作正常 公共函数 write_qb_details($category, $slug = NULL){ $config['uri_segment'] = 2; $slug = $this->uri->segment(3); //数据 $data['qb_list'] = $this->Question_bank_model->get_qb_with_category(FALSE); $data['qb_info'] = $this->Question_bank_model->get_qb_details($slug, $config['uri_segment']); 如果(空($data['qb_info'])){ 显示_404(); } $data['url_slug'] = $data['qb_info']['qb_exam_slug']; $data['meta_title'] = $data['qb_info']['qb_exam']; $data['meta_description'] = $data['qb_info']['qb_exam_post_meta']; $data['meta_keywords'] = $data['qb_info']['qb_exam_post_tags']; //看法 $data['main_content'] = 'writing_qb_details'; $this->load->view('include/template',$data); } // 工作正常 公共函数 write_qb_answer($slug = NULL, $slug2 = NULL){ $config['uri_segment'] = 2; $slug = $this->uri->segment(3); $slug2 = $this->uri->segment(4); //数据 $data['qb_info'] = $this->Question_bank_model->get_qb_answer_details($slug, $slug2, $config['uri_segment']); 如果(空($data['qb_info'])){ 显示_404(); } $data['url_slug'] = $data['qb_info']['qb_exam_question_slug']; $data['meta_title'] = $data['qb_info']['qb_exam_question']; $data['meta_description'] = $data['qb_info']['qb_exam_answer_meta']; $data['meta_keywords'] = $data['qb_info']['qb_exam_answer_tags']; //看法 $data['main_content'] = '答案'; $this->load->view('include/template',$data); }// 它不起作用
而我的模型是...
公共函数 get_qb_details($slug = FALSE){ 如果($slug === FALSE){ $this->db->order_by('qb_post.qb_exam_slug', 'DESC'); $this->db->join('qb_category', 'qb_category.qb_category_name_slug = qb_post.qb_category_name_slug'); $this->db->where('qb_exam_active',1); $query = $this->db->get('qb_post'); 返回 $query->result_array(); } $query = $this->db->get_where('qb_post', array('qb_exam_slug' => $slug)); 返回 $query->row_array(); } 公共函数 get_qb_answer_details($slug2 = FALSE){ 如果($slug2 === FALSE){ $this->db->where('qb_exam_answer_active',1); $query = $this->db->get('qb_exam_ans'); 返回 $query->result_array(); } $query = $this->db->get_where('qb_exam_ans', array('qb_exam_question_slug' => $slug2)); 返回 $query->row_array(); }
在控制器"writing_qb_answer"中,以及在路由$route['writing-qb/(:any)/(:any)/(:any)'] = 'writing-qb/writing_qb_answer/$1/$2 /$3';中,禁用。它显示404错误。
您的路由重叠了。
请查看文档中的注释:
注释1:
注释2:
注释3:
路由不是过滤器,当您使用(:any)时,它表示任何内容!为什么第一个和第二个有效?因为您首先检查是否为数字,对于第一个未捕获的任何内容都会被第二个捕获,这意味着第三个永远不起作用。这就像是如果...否则...而不是如果...否则如果...否则...