views:

136

answers:

1

Hi There,

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

+2  A: 

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.

Colin
looks spot on - cheers!
Sergio