Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Codeigniter: How to build an edit form that uses form validation and re-population?

I have a simple form in codeigniter that I wish to use for the editing or records. I am at the stage where my form is displayed and the values entered into the corresponding input boxes.

This is done by simply setting the values of said boxes to whatever they need to be in the view:

<input type="text" value="<?php echo $article['short_desc'];?>" name="short_desc" />

But, if I wish to use form_validation in codeigniter then I have to add thos code to my mark-up:

<input value="<?php echo set_value('short_desc')?>" type="text" name="short_desc" />

So not the value can be set with the set_value function should it need to be repopulated on error from the post data.

Is there a way to combine the two so that my edit form can show the values to be edited but also re-populate?

Thanks

like image 286
Sergio Avatar asked Apr 29 '10 10:04

Sergio


1 Answers

set_value() can actually take a second argument for a default value if there is nothing to repopulate (At least looking at CI versions 1.7.1 and 1.7.2). See the following from the Form_validation.php library (line 710):

/**
 * Get the value from a form
 *
 * Permits you to repopulate a form field with the value it was submitted
 * with, or, if that value doesn't exist, with the default
 *
 * @access  public
 * @param   string  the field name
 * @param   string
 * @return  void
 */ 
function set_value($field = '', $default = '')
{
    if ( ! isset($this->_field_data[$field]))
        {
            return $default;
        }

        return $this->_field_data[$field]['postdata'];
}

So, with that in mind you should be able to simply pass your default value to set_value like this:

<input value="<?php echo set_value('short_desc', $article['short_desc'])?>" type="text" name="short_desc" />

If there is no value to repopulate, set_value() will default to $article['short_desc']

Hope that helps.

like image 66
Colin Brock Avatar answered Sep 22 '22 10:09

Colin Brock