0

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

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

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

谢谢您,非常乐意帮助您详细说明。

4

1 回答 1

1

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

设定值()

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

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

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

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

控制器

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 函数使用提交的值重新填充字段。

查看(我的表单)

<?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>
于 2012-09-16T10:44:27.907 回答