codeigniter: изменить html класс, когда возникает ошибка проверки формы? - PullRequest
3 голосов
/ 23 января 2012

при использовании проверки формы CodeIgniter я вижу, что есть функция form_error() для вывода ошибки, если она существует, и пустой тег html, если нет. Есть ли простой способ сделать логический тест, если есть ошибка для определенного поля или нет? Я хотел бы изменить класс самого элемента ввода вместо того, чтобы просто распечатать ошибку. Каков наилучший способ сделать это?

Ответы [ 5 ]

4 голосов
/ 23 января 2012

Я не где-нибудь, где я могу проверить это, но разве это не сработает?

<?php
if (!empty(form_error('username')))
{
    $class = "error";
}
else
{
    $class = "valid";
}
?>

<input type="text" name="username" class="<?= $class ?>" value="<?= set_value('username') ?>" />
2 голосов
/ 23 января 2012

Просмотр источника (строка 207 из https://github.com/EllisLab/CodeIgniter/blob/v2.1.0/system/libraries/Form_validation.php), form_error() возвращает пустую строку, если нет ошибки, связанной с данным полем. Вы можете проверить, что возвращает метод, и использовать это как условиедля изменения класса элемента.

1 голос
/ 09 сентября 2012

Я использую это таким образом

<div class="control-group <?php if (form_error('group')!="") echo "error"; ?>">
1 голос
/ 27 января 2012

это работает для меня

<?php 
if(form_error('field_name') != '')
{
   $class = 'error';
}

Не уверен, почему это работает, когда! Empty выдает ошибку: Невозможно использовать возвращаемое значение функции в контексте записи.

0 голосов
/ 12 июня 2013

Другим вариантом может быть стиль родительского элемента.

, например

я использовал твиттер, так что вот код

<div class="controls">
  <input type="text" name="dob" id="dob">
  <?php echo form_error('dob'); ?>
</div>

для стилизации ошибок я только что добавил это в css

> .controls p {  color : red; }

Элемент ошибки отображается в теге p. Надеюсь, это поможет.

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