Я использую CodeIgniter для проверки формы. После того, как форма отправлена и есть какая-то ошибка проверки, я хочу сформировать, чтобы запомнить значения полей ввода. В настоящий момент я проверяю все поля сразу, и все работает нормально (т.е. я могу получить значения полей ввода в форме, если проверка не удалась.
Следующий код работает нормально:
Вид:
<?php if ( form_error('name') ) { ?>
<input type="text" class="error" name="name" value="<?php echo set_value('name'); ?>"/>
<?php echo form_error('name', '<p class="error">', '</p>');
} else { ?>
<input type="text" name="name" value="<?php echo set_value('name'); ?>"/>
<?php } ?>
Контроллер:
function validate_form{
$this -> form_validation -> set_rules( 'name', 'name', 'trim|required|' );
$this -> form_validation -> set_rules( 'email', 'Email', 'trim|required|callback_email_available' );
$this -> form_validation -> set_rules( 'captcha', 'captcha', 'callback_check_captcha' );
if ( $this -> form_validation -> run() === FALSE )
{
$this -> load -> view( 'signup_view' );
}
else
{
//process form and insert to db.
}
}
Моя проблема:
Теперь вместо подхода, описанного выше (для проверки всех полей одновременно), я хочу сначала проверить только одно поле 'captcha'. Так что, если поле капчи подтверждено, то я хочу проверить другие поля. В противном случае я хочу вернуться к форме и отобразить ошибку капчи, но я хочу сохранить другие значения полей в полях ввода, чтобы пользователю не приходилось вводить снова.
Я пытаюсь выполнить следующий код, но он не работает нормально. Например, когда я отправляю форму, поля не запоминают значения.
Код представления такой же, как указано выше.
Код, который я пытаюсь и не работает:
$this -> form_validation -> set_rules( 'captcha', 'captcha', 'callback_check_captcha' );
if ( $this -> form_validation -> run() === FALSE )
{
$this -> load -> view( 'signup_view' );
}
else
{
$this -> form_validation -> set_rules( 'name', 'Name', 'trim|required|' );
$this -> form_validation -> set_rules( 'email', 'Email', 'trim|required|callback_email_available' );
if ( $this -> form_validation -> run() === FALSE )
{
$this -> load -> view( 'signup_view' );
}
else
{
//process form and insert to db.
}
}