php - 在 codeigniter 中提交表单失败后无法保留表单中的值

标签 php codeigniter

我正在 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(); ?>

Controller

$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);
  }

最佳答案

您的 View 文件的代码绝对正确。您只需对 Controller 的方法进行少量修改。

在代码中实现解决方案之前,您需要了解几个关键点:

  1. 仅当您的验证规则成功通过并且您接受用户输入的动机已完成时才进行重定向
  2. 当您的验证规则未通过时,加载您的 View 而不是重定向它
  3. 将 form_error(FIELD_NAME) 与每个输入一起放置以显示验证错误

下面是操作示例:

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);
}

这是完整的解决方案。我确信,如果验证规则失败,您将获得表单字段中设置的所有值。

如果您遇到任何问题,请告诉我。

关于php - 在 codeigniter 中提交表单失败后无法保留表单中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737814/

相关文章:

codeigniter - 用于 codeigniter 的 Paypal API

mysql - 如何在mysql脚本中获取这个结构

php - 在 Codeigniter 中将一个 Controller 扩展到另一个 Controller

php - 如何在 Codeigniter 中创建动态站点地图

php - 如何将条件附加到 Eloquent 关系查询中?

php - 如果我只想在 PhalconPHP 中使用 MongoDB,我应该对 db 使用什么设置?

php - MySQL 语法错误

php - 我们可以在 insert into 语句中传递 where 条件吗?如果不是,Codeigniter 中的解决方案是什么?

php - 为什么我应该阻止直接访问不回显任何内容的 PHP 文件?

php - Laravel/broadcasting/auth 总是失败并出现 403 错误