2010-04-29 15 views
10

Tengo un formulario simple en codeigniter que deseo usar para la edición o los registros. Estoy en la etapa en que se muestra mi formulario y los valores ingresados ​​en los cuadros de entrada correspondientes.Codeigniter: ¿Cómo crear un formulario de edición que use la validación de formulario y la repoblación?

Esto se hace simplemente ajustando los valores de dichas cajas a todo lo que necesitan para estar en la vista:

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

Pero, si quiero usar form_validation en CodeIgniter entonces tienen que agregar código Thos a mi margen de beneficios:

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

Así no el valor se puede configurar con la función set_value en caso de que tenga que ser repoblada en caso de error de los datos de envío.

¿Hay alguna forma de combinar los dos para que mi formulario de edición pueda mostrar los valores que se editarán pero también volver a rellenar?

Gracias

Respuesta

19

set_value() en realidad puede tener un segundo argumento a favor de un valor por defecto si no hay nada para repoblar (Por lo menos mirar a las versiones 1.7.1 y 1.7.2 CI). Vea lo siguiente de la biblioteca Form_validation.php (línea 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']; 
} 

Entonces, con esto en mente, usted debería ser capaz de pasar simplemente el valor predeterminado a set_value así:

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

Si no hay ningún valor para repoblar, set_value() estará predeterminado en $article['short_desc']

Espero que ayude.

+0

parece perfecto - ¡salud! – Sergio

+0

Solución perfecta. Mientras prueba este "set_value", aplique la función "set_value()" a todos los campos. Probarlo en un solo campo no dará el resultado. – Pravin

Cuestiones relacionadas