Показывать только первую ошибку

Я использую класс ignream form_validation для выполнения ряда проверок, поскольку codeigniter проверяет все поля, а затем отображает список всех ошибок, мне нужно ограничить это, чтобы показать только первую произошедшую ошибку.

Например.

Если у меня есть 2 поля (электронная почта, сообщение) с required проверкой на месте, и если я должен оставить оба поля пустыми. Мне нужно codeigniter, чтобы показать только ошибку. Поле электронной почты требуется.

1 ответ

Насколько мне известно, CI не поставляется с этим, но достаточно легко реализовать:

Во-первых, (если у вас еще нет этого файла) создайте файл MY_Form_validation.php в приложении /library/ со следующим:

<p> Затем добавьте следующий метод в этот класс:</p> <pre class="prettyprint linenums">/** * First Error * * Returns the first error messages as a string, wrapped in the error delimiters * * @access public * @param string * @param string * @return str */ public function first_error($prefix = '', $suffix = '') { // No errrors, validation passes! if (count($this-&gt;_error_array) === 0) { return ''; } if ($prefix == '') { $prefix = $this-&gt;_error_prefix; } if ($suffix == '') { $suffix = $this-&gt;_error_suffix; } // Generate the error string $str = ''; foreach ($this-&gt;_error_array as $val) { if ($val != '') { return $prefix.$val.$suffix."\n"; } } return $str; }</pre> <p> Таким образом, вы сможете получить доступ к этому с помощью <code>$this->form_validation->first_error()

Кроме того, вы можете создать вспомогательную функцию, похожую на validation_errors() на (если файл не существует), создав файл с именем MY_form_helper.php в приложении/помощниках/

а затем добавив следующий код:

/**
 * First Validation Error String
 *
 * Returns the first error associated with a form submission. This is a helper
 * function for the form validation class.
 *
 * @access public
 * @param string
 * @param string
 * @return string
 */
if ( ! function_exists('first_validation_error'))
{
 function first_validation_error($prefix = '', $suffix = '')
 {
 if (FALSE === ($OBJ =& _get_validation_object()))
 {
 return '';
 }

 return $OBJ->first_error($prefix, $suffix);
 }
}

Надеюсь это поможет!

licensed under cc by-sa 3.0 with attribution.