На CodeIgniter, как заполнить форму только правильными значениями? - PullRequest
3 голосов
/ 29 декабря 2011

Представьте себе такую ​​форму:

<form action="test.php" method="post">
    <input type="text" name="firstname" value="<?=set_value('firstname')?>" />
    <input type="text" name="lastname" value="<?=set_value('lastname')?>" />
    <input type="text" name="email" value="<?=set_value('email')?>" />
    <input type="submit" name="submit_form" value="OK" />
</form>

Если я отправлю неправильное электронное письмо, функция CodeIgniter напишет «поле недопустимо» и заполнит недопустимое поле неправильным значением.

Я хотел бы сохранить сообщение об ошибке, но не неправильное значение (я предпочитаю иметь пустое значение). Но я также хочу сохранить функцию повторного заполнения для правильных значений.

Вот что я получаю:

http://nsa21.casimages.com/img/2011/12/29//111229060041170572.jpg

Вот что я хочу:

enter image description here

[РЕДАКТИРОВАТЬ] РЕШЕНИЕ НАЙДЕНО (спасибо г-ну Калеуну и Мэтту Муру)

Пример с полем электронной почты:

<input type="text" name="email" id="email" value="<?=!form_error('email')?set_value('email'):''?>" />

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

Ошибка Form_error устанавливается в случае ошибки значения формы на основе проверки. Судя по использованию вами функции set_value, я предполагаю, что вы используете встроенную проверку формы. Вы можете проверить, установлено ли сообщение для этого поля if(form_error('fieldname') !=NULL) и установить значение на его основе.

Возможно, вам придется настроить сообщения об ошибках для каждого поля, что вы должны делать в любом случае. Вот руководство, которое покрывает это: http://codeigniter.com/user_guide/libraries/form_validation.html#repopulatingform

<form action="test.php" method="post"> 
    <input type="text" name="firstname" value="<?if(form_error('firstname') != NULL){echo set_value('firstname');}?>" /> 
    <input type="text" name="lastname" value="<?if(form_error('lastname') != NULL){ echo set_value('lastname');}?>" /> 
    <input type="text" name="email" value="<?if(form_error('email') !=NULL){ echo set_value('email');}?>" /> 
    <input type="submit" name="submit_form" value="OK" /> 
</form> 

* ПРИМЕЧАНИЕ ЭТОТ КОД НЕ БЫЛ ПРОВЕРЕН ** *

1 голос
/ 29 декабря 2011

Вы можете проверить поля по отдельности и иметь такую ​​логику.

Если присутствует ошибка для определенного поля, вы можете построить логику поверх этого.

if ( form_error('email') != '' )
{
    $data['email_value'] = '';
}
else
{
    $data['email_value'] = set_value('email');
}

<form action="test.php" method="post">
    <input type="text" name="firstname" value="<?=set_value('firstname')?>" />
    <input type="text" name="lastname" value="<?=set_value('lastname')?>" />
    <input type="text" name="email" value="<?= $email_value; ?>" />
    <input type="submit" name="submit_form" value="OK" />
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...