我在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);
}
这是我得到的错误:
答案 0 :(得分:1)
如果要加载验证错误的复选框,
使用set_checkbox('name', 'value');
像这样,
set_checkbox('formChecks', 'value');
获取错误,因为您正在尝试回显数组。