CodeIgniter - 表单处理很慢,并且在错误时不返回值

时间:2011-08-22 17:42:26

标签: codeigniter

我正在尝试压缩我的控制器,主要是由于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秒,但仍然令人厌恶),然后重新加载表单,但没有显示错误,表格也没有重新填充。

我觉得这是一个非常简单的问题,这是一个纯粹的用户错误,但我无法确切地知道我在这里做错了什么让这个过程变得如此挑剔。

1 个答案:

答案 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并停止执行该方法的其余部分。