我在页面中有三个表单。比如,一个用于登录,一个用于注册,一个用于忘记密码。所有这些都形成了行动,同样如此。在提交期间,提交的表单由隐藏的输入值标识。
echo form_hidden('formname', 'registration');
echo form_hidden('formname', 'login');
echo form_hidden('formname', 'assistance');
每个表单都有一组验证规则,例如valid_email
,min_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}}
答案 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警报面板中的所有错误