Ошибка неопределенной переменной после проверки формы в Codeigniter - PullRequest
0 голосов
/ 06 марта 2012

Я пытаюсь использовать проверку формы для моей формы после того, как пользователь отправит ее.Моя страница просмотра имеет переменную, которая была передана моим контроллером.Страница просмотра работает нормально, пока я не отправлю форму для проверки.Это дало мне ошибки, говоря, что переменные, передаваемые контроллером, были неопределенными.Я не уверен, как решить это.Есть мысли?

// Controller - status.php
public function load_view ()
{
    $this->load->model('project_query');
    $JNresults=$this->project_query->get_jobnumber();
    $data['JNresults']=$JNresults->result(); //pass to view
    $data['view']='form_view';
    $this->load->view('include/template',$data);
}

public function validate ()
{
    //validate form

    $data['error']='There are errors in your form.';
    $data['view']='form_view';
    $this->load->view('include/template',$data);
}
// View page - form_view.php
foreach ($JNresults as $row):    //work fine when first loaded. 
    echo $row->job_number;
endforeach;

echo form_open('status/validate');
echo validation_errors();
// input fields...
echo form_submit($submit);
echo form_close();

Я получаю неопределенную переменную $JNresults после отправки формы.Я понимаю, что страница просмотра не распознает ее, потому что она была передана с контроллера.Я просто хочу знать, может ли кто-нибудь помочь мне решить эту проблему.

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Во второй функции контроллера вы не загружаете переменную JNresults, вы должны добавить:

public function validate ()
{
    //validate form
    $JNresults=$this->project_query->get_jobnumber();
    $data['JNresults']=$JNresults->result(); //pass to view
    $data['error']='There are errors in your form.';
    $data['view']='form_view';
    $this->load->view('include/template',$data);
}

Также вы не вызываете проверку для данных публикации в этой функции.

1 голос
/ 06 марта 2012

В вашем методе validate() вы не используете $data['JNresults']=$JNresults->result();, поэтому переменная $JNresults никогда не заполняется в вашем представлении.

Решение:

Подтвердите форму в load_view() и избавьтесь от validate() метода:

public function load_view()
{
    // set validation rules
    if ($this->form_validation->run())
    {
        // do something
    }

    $this->load->model('project_query');
    $JNresults=$this->project_query->get_jobnumber();
    $data['JNresults']=$JNresults->result(); //pass to view
    $data['view']='form_view';
    $this->load->view('include/template', $data);
}

Затем измените form_open('status/validate') на form_open() или form_open('status/load_view').

Похоже, вы не используете $data['error'], что хорошо, потому что вам это не нужно. validation_error() возвращает пустую строку, если ошибок нет, поэтому, если вы хотите добавить дополнительное сообщение, вы можете просто проверить, пусто ли оно:

if ($errors = validation_errors())
{
    echo 'There were errors:';
    echo $errors;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...