我使用Codeigniter 3.0.6版,现在我有一个名为modifyfiles
的控制器。该控制器的索引函数接受一个参数。
使用给定的参数,索引控制器将搜索模型中的所需数据。以下代码是我的索引函数:
public function index($id){
$_SESSION['logged_in']['idmod'] = $id;
$this->data['modullist'] = $this->__getmodulbyid($id);
$this->data['lecturelist'] = $this->__getlecturelist();
if(count($this->data['modullist']) <= 0){
show_404();
} else {
$this->load->view($this->layout, $this->data);
}
}
现在效果非常好,当我尝试插入错误的数字参数时,它会将我引导到codeigniter内置的404页面。
但是当我尝试插入一些非数字参数时,比如一些字符,它会引导我进入我自己的404页面。
这是我的路由规则:
$route['404_override'] = 'home/pagemissing';
$route['dosen/modifymodul'] = 'dosen-tools/modifymodul';
$route['dosen/modifymodul/(:num)'] = 'dosen-tools/modifymodul/index/$1';
我想当用户输入错误的参数时,无论它们是数字还是字符,该函数都会重定向到我自己的404页面,而不是内置的页面。我怎样才能做到这一点?
我很确定问题出在我的条件块
中if(count($this->data['modullist']) <= 0){
show_404();
} else {
$this->load->view($this->layout, $this->data);
}
我应该写什么来替换show_404()?
或者,如果我没错,怎么能用404_override触发器替换show_404()?
解决了
我做了一些研究,最后在我的一个路由规则中创建了这个回调
$route['dosen/modifymodul/(:num)'] =
function ($id){
if(is_numeric($id)){
return 'dosen-tools/modifymodul/index/'.$id;
} else {
return 'home/pagemissing';
}
};
谢谢大家