我正在尝试压缩我的控制器,主要是由于URI美学。现在我的控制器正常工作,但是如果出现错误,我会留下控制器/进程,我真的不想在那里,我宁愿它添加。
所以我试图用
重建我的控制器public function add()
{
if ( $this->input->server('REQUEST_METHOD') === 'POST' )
{
if ( $this->form_validation->run('add') === FALSE )
{
$this->add(); // reload the method/form for errors.
}
else
{
$this->_process(); // private function for inserting the data.
}
}
else
{
$this->load->view('add_form')
}
}
发生的事情是形式需要很长时间(只有5秒,但仍然令人厌恶),然后重新加载表单,但没有显示错误,表格也没有重新填充。
我觉得这是一个非常简单的问题,这是一个纯粹的用户错误,但我无法确切地知道我在这里做错了什么让这个过程变得如此挑剔。
答案 0 :(得分:1)
当表单无法加载时,您再次调用方法add()
,这可能导致它继续循环自身。我会将代码重构为类似的东西:
public function add()
{
if ( $this->form_validation->run('add') )
{
$this->_process(); // private function for inserting the data.
redirect('controller_name/method_name');
}
$this->load->view('add_form')
}
注意我删除了检查以查看是否发送了POST,因为如果没有$_POST
var要检查它,表单将不会验证。此外,我输入redirect()
将用户发送到另一个方法,甚至重新加载相同的方法,但它将清除$_POST
并停止执行该方法的其余部分。