I am using CodeIgniter to validate the form. Once the form is submitted and there's some validation error, I want to form to remember the input fields values. At the moment, I validate all fields at once and it works fine (ie. I can get the input fields values in the form if the validation fails.
The following code works fine:
View:
<?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 } ?>
Controller:
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.
}
}
My Problem:
Now, Instead of above approach (to validate all fields at once), I want to validate only one field 'captcha' at first. So If the captcha field is validated, then i want to valiate the other fields. Otherwise i want to return to form and display the captcha error, but I want to keep the other fields values the input fields, so that the user don't have to type again.
I am trying following code, but it does not work fine. For example, when I submit the form, the fields dont seem to remember the values. The view code is same as above.
Code which I am trying and is not working:
$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.
}
}