【问题标题】:multiple form validation codeigniter conflict [duplicate]多个表单验证codeigniter冲突[重复]
【发布时间】:2012-09-29 12:51:20
【问题描述】:

可能重复:
Codeigniter 2 forms on one page, validation_errors problem

我的页面中有 2 个表单。我需要一次验证它们 1,但我认为存在冲突。这里看看:

当我提交任何一个表单时,它们都显示相同的错误消息

我使用validation_errors() 来显示消息。如何一次验证表单 1?

这里是代码

public function update_user_info(){ 
    $this->form_validation->set_rules("firstname","First Name","required");     
    $this->form_validation->set_rules("lastname","Last Name","required"); 
    $this->form_validation->set_rules("middlename","Middle Name","required"); 
    if($this->form_validation->run()===false){ 
        //wrong 
    } 
    else { //correct } 
}

【问题讨论】:

  • http://stackoverflow.com/questions/5802729/codeigniter-2-forms-on-one-page-validation-errors-problem
  • 公共函数 update_user_info(){ $this->form_validation->set_rules("firstname","First Name","re​​quired"); $this->form_validation->set_rules("lastname","Last Name","re​​quired"); $this->form_validation->set_rules("middlename","Middle Name","re​​quired"); if($this->form_validation->run()===false){ //错误 }else{ //正确 } }

标签: php codeigniter


【解决方案1】:

我刚刚遇到了这个问题。 我的解决方案是:

1.首先设置第一个提交按钮名称='update_info'

2.第二次设置第二次提交按钮名称='change_password'

3.最后更改您的 update_user_info()。

public function update_user_info(){ 
    if (isset ($_POST['update_info'])) {
        $this->form_validation->set_rules("firstname","First Name","required");     
        $this->form_validation->set_rules("lastname","Last Name","required"); 
        $this->form_validation->set_rules("middlename","Middle Name","required"); 
        if($this->form_validation->run()===false){ 
            //wrong 
        } 
        else { //correct }             
    }
    else if (isset ($_POST['change_password'])){
        form_validation of your change password
    }

我认为这是解决问题的最简单方法。

祝你好运。

【讨论】:

  • 谢谢! :) 它就像一个魅力!
【解决方案2】:

您可以为每个表单输入一个隐藏输入

First Form:
<input type="hidden" name="form" value="form1" />

Second Form:
<input type="hidden" name="form" value="form2" />

在您的控制器中,您可以为每个表单设置规则数组

$config['form1'] = array(
               array(
                     'field'   => 'username', 
                     'label'   => 'Username', 
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'password', 
                     'label'   => 'Password', 
                     'rules'   => 'required'
                  ),
            );

$config['form2'] = array(
               array(
                     'field'   => 'email', 
                     'label'   => 'Email', 
                     'rules'   => 'required'
                  ),
            );

Now check which hidden field posted

$form = $this->input->post('form')


Now you can set rules as below

$this->form_validation->set_rules($config[$form]);

if ($this->form_validation->run()):

    // process form

else:
        $data[$form.'_errors'] = validation_errors();
endif;

现在在您的视图文件中

if (isset($form1_errors)) echo $form1_errors;
if (isset($form2_errors)) echo $form2_errors;

【讨论】:

    【解决方案3】:

    如果您对每个表单都有不同的验证错误,您可以检查来自validation_errors 的输出。

    据我所知,validation_errors 只允许您更改错误的分隔符,不能更改其他内容。但是,您可以尝试显示单个表单错误,如下所示:&lt;?php echo form_error('username'); ?&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      相关资源
      最近更新 更多