CodeIgniter,在相应的div中显示验证错误

时间:2014-05-30 17:40:19

标签: php codeigniter

我在页面中有三个表单。比如,一个用于登录,一个用于注册,一个用于忘记密码。所有这些都形成了行动,同样如此。在提交期间,提交的表单由隐藏的输入值标识。

echo form_hidden('formname', 'registration');
echo form_hidden('formname', 'login');
echo form_hidden('formname', 'assistance');

每个表单都有一组验证规则,例如valid_emailmin_length等。如果提交无效,则会抛出错误。但问题是,当抛出错误时,它会显示在三种形式之上。因为每个表单都高于validation_errors()。我的页面中不能单validation_errors

那么我有什么方法可以将{登录表单对应的登录表单的错误消息放在<div> login-errors<div>中的注册表单错误registration-errors,其中ID为<div id='registration-errors'> <?php validation_errors(); // For error messages of registration form echo form_open('account', array('method'=>"POST", 'autocomplete'=>"off", 'class'=>'user-register')); // Hidden input + Other inputs and labels + Submit button ?> </div> <div id='login-errors'> <?php validation_errors(); // For error messages of registration form echo form_open('account', array('method'=>"POST", 'autocomplete'=>"off", 'class'=>'user-login')); // Hidden input + Other inputs and labels + Submit button ?> </div> <div id='assistance-errors'> <?php validation_errors(); // For error messages of forgot password form echo form_open('account', array('method'=>"POST", 'autocomplete'=>"off", 'class'=>'user-assistance')); // Hidden input + Other inputs and labels + Submit button ?> </div> 等等?

{{1}}

3 个答案:

答案 0 :(得分:1)

这是因为您在所有表单上都回显validation_errors(),因此如果存在任何验证错误,则始终为真。

尝试使用: -

form_error('fieldname');

或发回一个唯一标识符以便从您的控制器中查看: -

$this->data['register'] = $this->input->post('registration');
$this->data['login'] = $this->input->post('login');
$this->data['assistance'] = $this->input->post('assistance');
$this->load->view('myview', $this->data);

然后检查你的观点: -

if(!empty($register))
echo validation_errors();

if(!empty($login))
echo validation_errors();

if(!empty($assistance))
echo validation_errors();

将所有三个值中的一些值隐藏起来,以便在一个提交中存在一个值

答案 1 :(得分:1)

在控制器中定义验证错误。

在视图中

<?php if(isset($registration_errors)){
     echo $registration_errors;
}

echo form_open('account', array('method'=>"POST", 'autocomplete'=>"off", 'class'=>'user-register'));
// Hidden input + Other inputs and labels + Submit button
?>

<?php if(isset($login_errors)){    
     echo $login_errors;
}

echo form_open('account', array('method'=>"POST", 'autocomplete'=>"off", 'class'=>'user-login'));
// Hidden input + Other inputs and labels + Submit button
?>


<?php if(isset($assistance_errors)){    
     echo $assistance_errors;
}
echo form_open('account', array('method'=>"POST", 'autocomplete'=>"off", 'class'=>'user-assistance'));
// Hidden input + Other inputs and labels + Submit button
?>

在您进行表单验证的控制器中,根据触发的提交按钮发生设置错误。

因此,例如,如果点击了“注册提交”按钮:

     if(isset($_POST['registration']){ //or whatever the name of the relevant input/submit value 

          if(!$this->form_validation->run()) {
              $vars['registration_errors'] = validation_errors();
          }else{
             //success stuff
          }
      }

答案 2 :(得分:0)

如果您使用margin功能

,则可以轻松执行此操作
validation_error()

将显示Bootstrap警报面板中的所有错误