php - 表单提交后设置值
问题描述
我正在使用 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);
}
}
解决方案
@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()
只有在您的表单提交时才会执行。
推荐阅读
- python - FailedPreconditionError: 发现 2 个根错误。(0) 失败的前提条件:尝试使用未初始化的值Variable_179
- python - 使用 numpy Python 获取最小索引
- javascript - 将输入值乘以其他输入
- android - 使用 NDK(本机 C++ 代码)部分构建 librealsense android 应用程序?
- arrays - 如何在保持函数中使用的变量值的同时正确调用我的函数?
- typescript - eslint 成员排序陷阱 - 先出现的声明会导致错误
- mysql - MySQL SELECT on 2 SELECT 结果是否可能
- c# - Blazor 将字符串发布到 API 获取 NULL
- java - 生产者和消费者没有按顺序打印答案
- python - pygame.draw.rect 和 screen_surface.blit() 有什么区别?