首页 > 解决方案 > 表单提交后设置值

问题描述

我正在使用 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);
    }
}

标签: phpcodeigniter

解决方案


@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>

您可以在此处查看完整文档。设置选择codeigniter

还有一件事,您不需要两次加载视图。您只能加载一次。

$this->form_validation->run()只有在您的表单提交时才会执行。


推荐阅读