2011-06-13 122 views
1

我可以在CodeIgniter中显示多个表单字段的单个消息吗? 例如,我为电子邮件和密码字段设置了以下规则。如果这两个字段中的任何一个无效,我只想显示一条消息。 (如无效的电子邮件或密码“)Codeigniter表单验证

$this->form_validation->set_rules('email_address', 'Email Address', 'valid_email|required'); 
$this->form_validation->set_rules('password', 'Password', 'required|min_length[4]'); 

我如何能做到这一点感谢所有帮助

编辑:。很抱歉,如果我的问题是不清楚目前我使用validation_errors(),和我但是,如果两个字段中的任何一个(电子邮件或密码)无效,我想显示相同的错误消息,无论电子邮件无效,或者密码无效或两者都无效,它应该打印一条消息,如:无效的电子邮件或密码。

+2

你是如何在视图中显示错误? – Vamsi 2011-06-13 09:49:50

+0

@Krish此刻我显示所有错误'<?php echo validation_errors(); ?>'。但是这种方法将分别打印电子邮件和密码两种错误。如果任何字段无效,我只想显示单个错误。 – Roman 2011-06-13 10:10:09

+2

更好的问题是,为什么要显示单个错误?用户不知道他们填写的是哪个字段 – 2011-06-13 10:11:51

回答

3

我不确定这是否是您需要的,但您可以尝试:

if($this->form_validation->run() == FALSE){ 
    $message = 'Your error message here'; //validation_errors() works too. 
}else{ 
    $message = 'Your success message here'; 
} 

$this->load->view('yourview',array('feedback_message'=>$message)); 

如果您不在乎哪个字段无效,那么此代码段就可以。 “有什么不对,我不在乎什么是错的,告诉用户”。

+1

如果他只使用这两个字段,但'validation_errors()'会显示所有的错误 - 不完全是OP想要的。 – 2011-06-13 09:58:09

+0

validation_errors()只输出错误?它不需要回声,打印或其他? – 2011-06-13 10:10:12

+1

@Jorge:我的意思是它包含一个字符串,其中包含所有遇到验证表单时遇到的错误。与OP想要的完全相反。实际上,他的问题根本不是很清楚 - 当表单验证消息实际应用于字段/规则集时,他要求获取验证字段的消息。 – 2011-06-13 10:12:47

0
$this->form_validation->set_message('rule', 'Error Message'); 

我认为,设定相同的错误消息,两者的规则将做的工作;)

+0

我不知道是否数组而不是字符串会作为消息工作... – 2011-06-13 09:55:46

+0

为两者设置相同的错误消息将不起作用,如果他循环遍历所有错误,它们都会显示。 – 2011-06-13 09:55:54

+0

对你的编辑 - 你将如何实际*在OP的例子中使用这个?它不起作用,因为有2个字段和几个规则。 – 2011-06-13 10:02:14

3

遍历每个字段并检查使用form_error(),添加任何无效的字段名称到一个错误字符串:

if($this->form_validation->run() == FALSE){ 
    $fields = array('email_address', 'password'); 
    $invalid_fields = array(); //where we'll store invalid field names 
    foreach($fields as $field){ 
     if(form_error($field)){ 
     $invalid_fields[] = $field; 
     } 
    } 
    $data['error_message'] = 'The following fields are invalid: ' . implode(",", $invalid_fields); 
} 
$this->load->view('yourview', $data); //if !empty($error_message) in view echo it out 
1

在你看来,你可以只是这样做:

<?php if(!empty($this->form_validation->_error_array)): ?> 
    <p>There were some errors.</p> 
<?php endif; ?>