我在codeigniter中创建一个表单,用户需要填写数据并提交,但是在提交表单后如果有任何错误,用户会被重定向回表单,但是在这个阶段他输入的值应该是保持形式。
我收到了flashdata错误但是这些值没有保留在表单中。我尝试使用set_value但只是得到空白表单作为回报。任何人都可以指出错误
查看
<?php echo form_open_multipart('student/data/'.$student->id); ?>
<p><?php echo $this->session->flashdata('req_msg'); ?></p>
<?php
$data = array(
'type' => 'text',
'name' => 'name',
'placeholder' => 'Full Name',
'class' => 'form-control',
'id' => 'form-first-name',
'value' => set_value('name')
);
?>
<?php echo form_input($data); ?>
<?php
$data = array(
'type'=>'tel',
'pattern'=>'^\d{10}$',
'name' => 'contactno',
'placeholder' => 'Enter 10 digit Contact No',
'class' => ' form-control',
'required' => 'required',
'id' => 'form-first-name',
'value' => set_value('contactno')
);
?>
<?php echo form_input($data); ?>
<div class="form-group">
<?php
$data = array(
'type' => 'submit',
'class' => 'btn btn-primary',
'name' => 'submit',
'content' => 'Upload',
'id' => 'btn-submit'
);
echo form_button($data);
?>
</div>
<?php echo form_close(); ?>
控制器
$this->form_validation->set_rules('contactno', 'Contact Number', 'trim|is_unique[student.contactno]');
if ($this->form_validation->run() == FALSE)
{
$this->session->set_flashdata('req_msg', 'Contact number already exists');
redirect('student/data/'.$studentid);
}
答案 0 :(得分:4)
您的查看文件的代码绝对正确。您只需要对控制器的方法进行少量修改。
在代码中实现解决方案之前,您需要了解几个关键点:
以下是行动的例子:
public function add()
{
$this->form_validation->set_rules('contactno', 'Contact Number', 'trim|is_unique[student.contactno]');
if ($this->form_validation->run() !== FALSE) {
// Your database or model function calling will be coded here and make sure it returns boolean value
if ($isTrue) {
$this->session->set_flashdata('req_msg', 'Congrats! You have successfully submitted data');
redirect('student/data/'.$studentid);
}else{
// Handle error logs here
}
}
$this->load->view('your_view', $this->view_data);
}
这是完整的解决方案。我确信如果验证规则失败,您将获得表单字段中设置的所有值。
如果您遇到任何问题,请告诉我。
答案 1 :(得分:1)
问题是由于您在FALSE form_validation之后重定向导致的。您必须在下面加载视图:
if ($this->form_validation->run() == FALSE) {
//your code
$this->load->view('your_view', $this->view_data);
}
在您的视图中,您必须在输入中使用 set_value()。
更多信息@ documentation