在CodeIgniter中验证失败后,从数据库生成复选框

时间:2015-12-10 10:21:26

标签: php forms codeigniter validation

我在CodeIgniter中创建了一个带有验证的表单,我在处理过程与验证时遇到了问题。在我的表单中,我有从数据库生成的复选框。所有工作,当有人提交表格没有错误(没有验证失败),但验证失败后我的复选框没有正确生成(我有错误)。

我的控制器:

    public function form()
{
    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');

    /////////////////////////////////////////
    ////// MY PROCESSING CODE //////////////
    ////////////////////////////////////////
    //Generating checkbocks from database
    $data['szkolenia'] = $this->Szkolenie_m->pobierz();

    //Validation
    $this->form_validation->set_rules('imie', 'Imię', 'required');
    $this->form_validation->set_message('required', 'Błąd: wypełnij powyższe pole');

    //After form submit
            if (!empty($_POST))
    {
    $konsultant = $this->uri->segment(3);

    $dane = array(
        'email1' => $this->input->post('email'),
        'imie' => $this->input->post('imie'),
        'nazwisko' => $this->input->post('nazwisko'),
        'nazwa_firmy' => $this->input->post('firma'),
        'konsultant_id' => $konsultant,
    );

    //Saving selected checkboxes into another db
    $boxes = $_POST['formChecks'];
    $N = count($boxes);
    $ostatni_id = $this->Osoby_m->ostatni_id();

    for($i=0; $i < $N; $i++)
    {
        $this->Osoby_m->nowy_wpis_formularz($boxes[$i]);    
        //echo $boxes[$i];      
    }       

    //Adding data to DB
    $this->Osoby_m->nowa_osoba($dane);  

    }   

    /////////////////////////////////////////
    ////// PROCESSING CODE END //////////////
    ////////////////////////////////////////

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('formularz', $data);
    }
    else
    {
        $this->load->view('wyslano_formularz');
    }
}

我在View中的复选框:

  <?php foreach ($szkolenia as $szkolenie): ?>
  <div class="checkbox">
        <label><input id="szkolenie<?php echo $szkolenie->id; ?>" type="checkbox" name="formChecks[]" value="<?php echo set_value('formChecks[]'); ?>"> <?php echo $szkolenie->nazwa_szkolenia; ?></label>
        <br>
    </div>
    <?php endforeach; ?>

提交此表单后,空白的所需输入脚本不会从数据库重新加载复选框并显示错误。当我将$data['szkolenia'] = $this->Szkolenie_m->pobierz();放入

时,就会发生这种情况

if ($this->form_validation->run() == FALSE) { $this->load->view('formularz', $data); }

这是我得到的错误:

enter image description here

1 个答案:

答案 0 :(得分:1)

如果要加载验证错误的复选框,

使用set_checkbox('name', 'value');

像这样,

set_checkbox('formChecks', 'value');

获取错误,因为您正在尝试回显数组。