【问题标题】:CodeIgniter - Form validation set falseCodeIgniter - 表单验证设置为 false
【发布时间】:2012-04-29 17:44:49
【问题描述】:

我有一些用于上传图片的脚本,我正在使用它来进行表单验证。所以这是代码:

$this->form_validation->set_rules('name','Name','required|max_length[30]|xss_clean');
$this->form_validation->set_rules('desc','Description','required|xss_clean');

if ($this->form_validation->run() == TRUE)
{
    $config = array(
        'allowed_types' => 'jpg|jpeg|png|gif',
        'upload_path' => path/to/folder,
        'max_size' => 3000,
        'max_height' => 1024,
        'max_width' => 1024,
        'remove_spaces' => TRUE
    );
    $this->load->library('upload', $config);

    if ($this->upload->do_upload())
    {
        //code for insert this data into database
    }
    else
    {
        //code for FALSE the form validation and error message with flashdata
    }

现在,如果图片上传出现错误,我想填写表单。我想像某些字段的错误(如果它是空的)一样这样做,以获取帖子变量的数据(对于字段的内容)。

最好的方法是什么?

【问题讨论】:

    标签: php forms codeigniter validation


    【解决方案1】:

    $this->form_validation->run()$this->upload->do_upload()else 条件应该类似。

    表单验证:

    $data['error_message'] = validation_errors();
    $this->load->view('form', $data);
    

    文件上传:

    $data['error_message'] = $this->upload->display_errors();
    $this->load->view('form', $data);
    

    “表单”视图是最初加载的视图。它可以有一个这样的 div:

    <div class="error_message">
       <?php if ($error_message) {
          echo $error_message;
       } ?>
    </div>
    

    【讨论】:

    • 我知道,但我不是在问这个。我正在寻找解决方案,如果上传文件有问题,只会错误执行表单验证。示例:if ($uploaderror == TRUE) { return false; //false form validation and get all values of fields back }
    • 像我在回复中提到的那样再次加载表单应该可以做到这一点。如果要重新填充字段,只需在每个字段上使用 set_value 函数。 if ($this-&gt;upload-&gt;do_upload())else 条件与 if ($uploaderror == TRUE) 完全相同
    • 你的回答是对的,问题就在我这边。我使用的 set_value 略有不同,但我没有考虑。再次感谢。
    • 再问一个问题... 是否有可能为 form_upload() 获得一些类似 set_value 的函数,因为如果表单的字段有错误,这条路径就会消失?
    • 出于安全原因,您不能将图像的路径保存在用户的计算机上。但是,您可以在整个表单验证之前执行上传,如下所示:if ($this-&gt;upload-&gt;do_upload() &amp;&amp; $this-&gt;form_validation-&gt;run() == TRUE) 或者您可以在表单验证的回调函数中执行此操作。阅读更多:codeigniter.com/forums/viewthread/150397/#729889
    猜你喜欢
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多