我正在使用codeigniter 3,而我正在尝试使用form_validation库。
基本上,如果验证失败,我会捕获输入数据,然后将其发送回表单。
所以我将所有表单数据都粘贴在一个数组中,如下所示:
// add input data to array
$org_data = array(
'org_id' => $this->input->post('org_id'),
'p_org_id' => $this->input->post('p_org_id'),
'account_ref' => $this->input->post('account_ref'),
'org_name' => $this->input->post('org_name'),
'address1' => $this->input->post('address1'),
'address2' => $this->input->post('address2'),
'address3' => $this->input->post('address3'),
'town' => $this->input->post('town'),
'county' => $this->input->post('county'),
'pcode' => $this->input->post('pcode'),
'phone' => $this->input->post('phone'),
'support_email' => $this->input->post('support_email'),
'notify_return' => $this->input->post('notify_return'),
'notify_email' => $this->input->post('notify_email'),
'email_interval' => $this->input->post('email_interval'),
'renewal_date' => $this->input->post('renewal_date'),
'login_reminder' => $this->input->post('login_reminder'),
'default_fireaware' => $this->input->post('default_fireaware'),
'open_training_url' => $this->input->post('open_training_url'),
);
一切都很好!
现在,要将数据发送回表单,我正在使用以下内容。
$this->data['org_id'] = array(
'name' => 'org_id',
'id' => 'org_id',
'type' => 'text',
'value' => $this->form_validation->set_value('org_id'),
);
BUT
我不想为每个输入创建其中一个,所以理想情况下我想使用循环创建这些。但我不能让它工作,我得到未定义的变量错误。
这是正在进行的循环:
foreach($org_data as $key => $value){
$this->data['$key'] = array(
'name' => '$key',
'id' => '$key',
'type' => 'text',
'value' => $this->form_validation->set_value('$value'),
);
}
我可以使用循环来执行此操作吗?
你有什么想法?
答案 0 :(得分:0)
使用像这样的验证
$config = array(
array(
'field' => 'username',
'label' => 'Username',
'rules' => 'required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required'
),
array(
'field' => 'passconf',
'label' => 'Password Confirmation',
'rules' => 'required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'required'
)
);
$this->form_validation->set_rules($config);
if ($this->form_validation->run() == FALSE) {
$data['errors'] = validation_errors();
$this->load->view('yourview', $data);
} else {
$userData = $this->input->post();
$this->load->view('yourview', $data);
}
答案 1 :(得分:0)
基本上,如果验证失败,我会捕获输入数据然后 将其发回表格。
是的,我认为这是澄清的部分 - 你根本不需要这样做 - 这就是使用set_value(' fieldName')的优势,它会自动回显值。相同 - 在表单上 - 使用form_error(' fieldName'),它将显示特定于字段的错误消息。