CodeIgniter - обработка формы идет медленно и не возвращает значения при ошибке - PullRequest
0 голосов
/ 22 августа 2011

Я пытаюсь немного сжать свой контроллер, в основном из-за эстетики URI.Прямо сейчас мой контроллер работает, но если есть ошибка, я остаюсь с контроллер / процесс , которого я на самом деле не хочу, я бы предпочел, чтобы это было add .

Поэтому я попытался перестроить свой контроллер с помощью

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 Ответ

1 голос
/ 22 августа 2011

Когда форма не загружается, вы снова вызываете метод 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 и остановит выполнение остального метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...