【问题标题】:How can I prevent codeigniter clearing form input fields on unsuccessful validation?如何防止 codeigniter 在验证不成功时清除表单输入字段?
【发布时间】:2014-06-18 01:01:55
【问题描述】:

我在视图中有一个 html 表单,该表单在其控制器中设置了验证规则,我遇到的问题是,当有人发送无效数据时,我想在客户端维护这些字段中的数据,如果我重新加载视图,字段被清除,我该如何维护数据中的字段?

【问题讨论】:

    标签: php codeigniter validation


    【解决方案1】:

    假设您正在对输入字段进行长时间编码:

    <input type="text" name="quantity" value="" />
    

    您可以使用Form Helperset_value() 函数将值返回到输入。

    <input type="text" name="quantity" value="<?php echo set_value('quantity');?>" />
    

    对于&lt;select&gt; 字段、复选框和单选按钮,有set_select()set_checkbox()set_radio()

    【讨论】:

    • 仅供参考,缺少关闭 php 标记
    【解决方案2】:

    请阅读此CI Documentation

    使用set_value() 可以防止codeigniter 在验证失败时清除表单输入字段。

    喜欢:

    <h5>Username</h5>
    <input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
    

    【讨论】:

      【解决方案3】:

      有两种方法可以避免这种情况。

      首先,您可以使用 ajax 提交代替 get 或 post 提交。如果您 ajax 提交成功,那么您使用 javascript 提交您的表单!

      另一种避免将提交数据存储到会话的方法。如果有效失败,则将会话存储的数据重新加载到您的视图中!

      【讨论】:

        【解决方案4】:

        如果您真的想在重新加载视图后保留这些值,则需要使用session user_data 或将值存储在数据库中的某个位置。我认为这不是您的意思,我认为您指的是提交后显示的数据(又名$_POST 数据)。

        在您看来,您可以像这样使用三元运算符:

        <input type="text" name="first_name" value="<?=isset($_POST['first_name'] ? $_POST['first_name'] : NULL ?>"/>
        

        还有其他方法可以从您的控制器进行管理。例如,您可以从控制器中定义一个变量 $first_name,如下所示:

        if(isset($_POST[]){
             //form_validation
             $vars['first_name'] = $this->input->post('first_name');
        }else{
             $vars['first_name'] = NULL;
        }
        $this->load->view('your_view',$vars);
        

        那么在您看来,您只需将输入的值设置为$first_name

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-26
          • 2019-12-04
          • 1970-01-01
          相关资源
          最近更新 更多