我正在使用codeigniter,并具有添加转帐的表格。我已经在控制器中编写了验证规则,但是当提交表单时出现错误消息,但是表单却忘记了用户输入的值。
我尝试使用set_value,它可以工作,但是有时我想制作if语句,我认为它必须在控制器中而不在视图中。有没有一种方法可以在控制器中设置值并将其以$ data的形式返回到视图
视图
<?php $type_val= set_value('type'); ?>
<select class="form-control show-tick" id="type" name="type">
<option value="<?=set_value('type');?>" ><?=($type_val == 1) ? 'Exit' : 'Come';?></option>
<option value="1">Exit</option>
<option value="2">COME</option>
</select>
控制器
public function add(){
if($this->input->post('submit')){
$rules = $this->get_rules_validation();
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == FALSE) {
$data['title'] = 'Add Transfer';
$data['view'] = 'admin/transfer/transfer_add';
$data['validation_error'] = true;
$this->load->view('layout', $data);
}
else{
$data = array(
'type' => $this->input->post('type'),
);
$data = $this->security->xss_clean($data);
$result = $this->transfer_model->add_transfer($data);
if($result){
$this->session->set_flashdata('msg', 'Transfer is Added Successfully!');
redirect(base_url('admin/transfer'));
}
else{
$this->session->set_flashdata('msg', 'Transfer Cant Be added!');
redirect(base_url('admin/transfer'));
}
}
}
else{
$data['title'] = 'Add Transfer';
$data['view'] = 'admin/transfer/transfer_add';
$this->load->view('layout', $data);
}
}
答案 0 :(得分:0)
@Samira,控制器中没有set_value
这样的方法。但是,您可以检查过帐的值并将其标记为已选择,然后传递$data
,但是您必须再次检查该值以在视图中将选项显示为选择项,这是没有意义的。
您应该使用set_select
而不是set_value
。
例如
<select class="form-control show-tick" id="type" name="type">
<option value="1" <?php echo set_select('type', '1'); ?>>Exit</option>
<option value="2" <?php echo set_select('type', '2'); ?>>COME</option>
</select>
您可以在此处查看完整的文档。 Set select codeigniter
还有一件事情,您不需要两次加载视图。您只能加载一次。
$this->form_validation->run()
仅在提交表单后执行。
答案 1 :(得分:0)
我已将验证放入函数中
public function get_rules_validation(){
$rules = array(
array(
'field' => 'type',
'label' => 'Type',
'rules' => 'is_natural_no_zero',
'errors' => array(
'is_natural_no_zero' => 'You must provide a %s.',
),
);
return $rules;
}
添加
public function add(){
if($this->input->post('submit')){
$rules = $this->get_rules_validation();
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == FALSE) {
$data['title'] = 'Add Transfer';
$data['view'] = 'admin/transfer/transfer_add';
$data['validation_error'] = true;
$this->load->view('layout', $data);
}
else{
$data = array(
'created_at' => date('Y-m-d : h:m:s'),
);
$data = $this->security->xss_clean($data);
$result = $this->transfer_model->add_transfer($data);
if($result){
$this->session->set_flashdata('msg', 'Transfer is Added Successfully!');
redirect(base_url('admin/transfer'));
}
else{
$this->session->set_flashdata('msg', 'Transfer Cant Be added!');
redirect(base_url('admin/transfer'));
}
}
}
else{
$data['title'] = 'Add Transfer';
$data['view'] = 'admin/transfer/transfer_add';
$this->load->view('layout', $data);
}
}