我正在尝试为CRUD活动编写一个紧凑的更新控制器。这是基本代码:
控制器:
function update($id)
{
$this->form_validation->set_rules('name','Name','required');
$this->form_validation->set_rules('age','Age','required|is_numeric');
$this->form_validation->set_rules('country','Country','');
$this->form_validation->set_error_delimiters('<br /><span class="error">', '</span>');
if ($this->form_validation->run() == FALSE) {
//Failed validation or first run
$data = $this->my_model->get_record($id);
$this->load->view('myform_view', $data);
} else {
//Validation success, update DB
}
}
查看:
<?php
$attributes = array('class' => '', 'id' => '');
echo form_open('my_form', $attributes); ?>
<p>
<label for="name">Name</label>
<?php echo form_error('name'); ?>
<br /><input id="name" type="text" name="name" value="<?php echo set_value('name'); ?>" />
</p>
<p>
<label for="age">Age</label>
<?php echo form_error('age'); ?>
<br /><input id="age" type="text" name="age" value="<?php echo set_value('age'); ?>" />
</p>
<p>
<label for="country">Country</label>
<?php echo form_error('country'); ?>
<br /><input id="country" type="text" name="country" value="<?php echo set_value('country'); ?>" />
</p>
<p>
<?php echo form_submit( 'submit', 'Submit'); ?>
</p>
<?php echo form_close(); ?>
这是基本结构,但是第一次运行表单时,没有经过验证的数据。因此,我必须从数据库中获取此信息。什么是第一次运行时将其传递给视图的最佳方法?然后,一旦提交了表单,如果验证失败,那么我希望失败的数据显示不再从DB重新加载。这是最好的方法吗?
答案 0 :(得分:1)
您应该有另一种查看方面的方法。然后根据“更新”方法提交表单。在那里,您可以像现在一样定义form_validation。
我问了一个类似的问题。见link答案 1 :(得分:0)
首先获取更新控制器中的数据以进行编辑,例如
$query = $this->db->where('id',$id)->get('table_name');
$data['edit'] = $query->result_array();
然后在视图文件中检查
value="<?php if(isset($edit[0]['age'])){echo $edit[0]['age'];}else{echo set_value('age');}?>"