如果页面无法提交,则存储$ _POST表单数据

时间:2012-09-16 08:30:19

标签: php codeigniter post

我正在使用codeigniter。我目前有一个非常简单的表单(只有输入字段)提交给控制器进行处理。

这一切都无所谓,但我要问的是我的表格中也有一个上传文件。因此上传功能将检查文件大小和类型等,如果不符合则会出错。当发生这种情况并且我选择了另一个符合要求的文件时,我提交但没有进入下一页,但上传的文件及其详细信息,而其他字段未发布或为空白。

好像帖子没有被缓存,当我选择要上传的新文件并且没问题时,它会检查这些字段的$ _POST并且它们是空的。如何检查以确保所有字段都包含值?

谢谢你,非常乐意帮助阐述。

1 个答案:

答案 0 :(得分:1)

要重新填充字段,可以使用set_value函数。

  

<强> set_value()

     
    

允许您设置输入表单或textarea的值。您必须通过函数的第一个参数提供字段名称。第二个(可选)参数允许您为表单设置默认值。

  

首先检查表单验证和上传是否成功。

如果两者都成功,我们会将用户重定向到新页面。

如果其中一个不成功,我们会将错误消息添加到您的数据数组中,我们可以在视图中访问它们并显示我们的表单。

<强>控制器

public function signup()
{
        // Data array
        $data = array();

        // Load form validation libary
        $this->load->library('form_validation');

        // Load upload library and set configuration
        $config['upload_path'] = './uploads/';
        $this->load->library('upload', $config);

        // Set the required fields
        $this->form_validation->set_rules('first_name', 'First name', 'required');

        if ($this->form_validation->run() == TRUE)
        {
            // If upload was succesfull
            if ($this->upload->do_upload())
            {
                $upload_data = $this->upload->data();

                // Build array to store in database
                $save_data = array(
                    'first_name' => $this->input->post('first_name'),
                    'image' => $upload_data['file_name']
                );

                // Send data to your model to process
                $this->your_model->save($save_data);

                // Redirect to success page
                redirect('registration_succes');
            }
            else
            {
                // Upload failed, set error
                $data['error'] = $this->upload->display_errors();
            }
        }
        else
        {
            // Form validation failed, set error
            $data['error'] = validation_errors();
        }

        // Display the form by default or on error
        $this->load->view('myform', $data);
}

在我们的视图中,我们使用set_value函数重新填充提交值的字段。

查看(myform)

<?php echo form_open_multipart('signup');?>
    <fieldset>

        <?php if( isset($error) && ! empty($error) ): ?>
        <div class="error"><?php echo $error; ?></div>
        <?php endif; ?>

        <p>
            <label>First name</label>
            <input type="text" name="first_name" value="<?php echo set_value('first_name'); ?>" />
        </p>

        <p>
            <label>File</label>
            <input type="file" name="userfile" size="20" />
        </p>

        <p>
            <input type="submit" />
        </p>

    </fieldset>
</form>