Можно ли отобразить одно сообщение для нескольких полей формы в 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()
, и я получаю ошибки каждого поля. Однако я хочу показать одно и то же сообщение об ошибке, если какое-либо из двух полей (адрес электронной почты или пароль) недействителен. Независимо от того, является ли адрес электронной почты недействительным или если пароль недействителен или оба являются недопустимыми, он должен печатать одно сообщение, такое как: недопустимый адрес электронной почты или пароль.
Я не уверен, что это то, что вам нужно, но вы можете попробовать:
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));
Если вам все равно, какое поле недействительно, то этот фрагмент в порядке. «Что-то не так, мне все равно, что случилось, скажите пользователю».
Итерации по каждому полю и проверка с помощью 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
По вашему мнению, вы можете просто сделать это:
<?php if(!empty($this->form_validation->_error_array)): ?> <p>There were some errors.</p> <?php endif; ?>
$this->form_validation->set_message('rule', 'Error Message');
Я думаю, установка того же сообщения об ошибке для обоих правил будет выполнять задание;)