CodeIgniter выделяет поля с ошибками при отправке формы - PullRequest
1 голос
/ 01 марта 2011

Я мог бы использовать некоторые рекомендации о том, как продолжить проверку формы в CodeIgniter. Я использую встроенную проверку формы CodeIgniter и работает отлично, насколько это возможно. Он возвращает отдельные сообщения об ошибках для каждого поля, где есть ошибка, используя и оборачивая ее в некоторый HTML / CSS для стилизации:

<?php echo validation_errors('<p class="error">'); ?>

Но мы хотим выделить поля, в которых есть ошибки. CI позволит вам поместить сообщения об ошибках рядом с местом, где находятся ошибки формы. Но для этого необходимо использовать сообщение об ошибке для значения, например:

<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />

, который, кстати, есть в руководстве CI в не-CI-синтаксисе, что меня озадачивает. В любом случае, мы также хотим, чтобы данные из поля при отправке формы были сохранены и возвращены. Итак, я сделал:

$email = array('name' => 'email', 'value' => $em);
      ?><div style="padding:5px;">Email* </div><?php echo form_input($email) . '<br/>';

$ em возвращается из контроллера следующим образом:

$data['em'] = $this->input->post('email');

Итак, мой вопрос: как мне выполнить все вышеперечисленное? Очевидно, что советует CI и что я сделал, сталкиваются. Но я не знаю, как еще это сделать, поэтому я мог бы использовать некоторую помощь.

РЕДАКТИРОВАТЬ: После дальнейшего копания я вижу, что вы можете поместить сообщение об ошибке рядом с полем, выполнив это:

<?php echo form_error('email'); ?>

Но я не получаю никакого сообщения об ошибке, даже если у меня написано правило, и я получаю сообщение об ошибке с первой строкой кода выше.

Ответы [ 3 ]

3 голосов
/ 19 декабря 2013

ошибка формы ($ field) возвращает пустую строку '', поэтому лучше использовать:

<input type="text" name="email" <?php if (form_error($email) !=='') { echo 'class="error"'; } ?> value="<?php echo set_value('email'); ?>" size="50" />

Проверено.

2 голосов
/ 01 марта 2011

Для индивидуального отображения ошибки следует использовать функцию form_error ('email').А чтобы получить значение проверяемого поля, используйте функцию set_value ('email').Чтобы эти две функции работали, вы должны были бы в своем контроллере установить правило для поля 'email'.Где вы указываете, какие правила проверки применяются к этому полю.

<?php echo form_error('email'); ?>
<input type="text" name="username" value="<?php echo set_value('email'); ?>" size="50" />

источник: http://codeigniter.com/user_guide/libraries/form_validation.html#individualerrors

1 голос
/ 01 марта 2011

не проверено, но form_error($field) должно возвращать true, если есть ошибка:

Так что, возможно:

<input type="text" name="email" <?php if (form_error($email)) { echo 'class="error"'; } ?> value="<?php echo set_value('email'); ?>" size="50" />

тестировалась. стоит попробовать?

Возможно, также рассмотрите возможность использования JQuery или подобного для проверки и стилизации полей формы и использования CI в качестве запасного варианта (для целей презентации, очевидно).

Таким образом, проверка формы может быть выполнена в соответствии с вашими требованиями без ограничений CI для 99% правил проверки, а затем для всего остального, может использоваться способ CI по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...