Tutorial CodeIgniter 3ª parte: Formularios

En esta nueva entrega crearemos registros en la base de datos, y para controlar la información que introduciremos, haremos uso de la librería de validación y el ayudante de formularios de CodeIgniter.

Creación del formulario

CodeIgniter nos facilita una serie de funciones que nos permitirán mostrar formularios en las vistas. El framework no nos obliga a usar sus procedimientos, pero usarlos nos ayudará a tener un código más ordenado y limpio.

En primer lugar crearemos una nueva función en el controlador «empleados.php», que en este primer paso, solo llamará a la vista necesaria:

[cc]
function nuevo_empleado(){
$this->load->helper(‘form’);
$this->load->view(«formulario»);
}
[/cc]

En primer lugar realizamos la carga de este ayudante, imprescindible si queremos usar sus funciones. Ya en la vista crearemos un formulario para introducir empleados en la tabla que usamos en el capítulo anterior.

[cc]

Nuevo empleado

‘;
echo form_label(‘Sueldo’, ‘sueldo’);
echo form_input(‘sueldo’);echo ‘
‘;
echo form_submit(‘botonSubmit’, ‘Enviar’);
echo form_close();
?>


[/cc]

formularios1

En primer lugar, utilizamos la función form_open para crear la etiqueta de apertura del formulario, el primer argumento es el atributo ‘action’ (CodeIgniter añade la URL raíz del sitio). A esta función también se le puede pasar un array con otros atributos que queramos añadir (class, id…) , para más información visitad la página dedicada al ayudante en la documentación.

Las siguientes líneas se encargan de mostrar los controles que necesitaremos para crear un empleado, en nuestro caso sólo hemos usado las etiquetas label, input y submit, pero el ayudante nos permite usar todos los controles de los que dispone HTML.

Ahora que tenemos el formulario listo, lo que haremos será comprobar que los datos sean correctos, en nuestro caso, que se hayan introducido tanto el nombre como el sueldo, que el nombre supere los 2 caracteres de largo y que el sueldo sea un valor númerico.

Validando el formulario

Para realizar estas comprobaciones podemos servirnos de la librería Form Validation, la cual nos permite introducir reglas de validación de la siguiente forma:

[cc]
$this->load->library(‘form_validation’);
$this->form_validation->set_rules(‘nombre’, ‘Nombre’, ‘required|min_length[3]’);
[/cc]

En primer lugar cargamos la librería para poder usar la función «set_rules», en la que le pasamos, en este mismo orden, el atributo «name» de la etiqueta, el nombre que tendrá en el mensaje de error, y las funciones de validación, separadas por el caracter «|». De esta manera indicamos que el campo es obligatorio y que como mínimo debe tener 3 caracteres de largo (aquí se puede ver el resto de funciones disponibles).

Una vez establecidas las reglas, podemos comprobar si el formulario se ha enviado correctamente, usando la función «run()» después de la llamada a «set_rules()»:

[cc]
if($this->form_validation->run() === true)
//Los datos son correctos
else
//Los datos no son correctos
[/cc]

Con esto ya podemos validar nuestro formulario y enviar los datos a la base de datos, la función quedaría así:
[cc]
function nuevo_empleado(){
$this->load->helper(‘form’);
$this->load->library(‘form_validation’);
$this->form_validation->set_rules(‘nombre’, ‘Nombre’, ‘required|min_length[3]’);
$this->form_validation->set_rules(‘sueldo’, ‘Sueldo’, ‘required|numeric’);

if($this->form_validation->run() === true){
//Si la validación es correcta, cogemos los datos de la variable POST
//y los enviamos al modelo
$nombre = $this->input->post(‘nombre’);
$sueldo = $this->input->post(‘sueldo’);

$this->load->model(‘empleados_model’);
$this->empleados_model->insertar_empleado($nombre, $sueldo);
}

$this->load->view(«formulario»);
}
[/cc]
Funcion insertar_empleado() (empleados_model.php):
[cc]
function insertar_empleado($nombre, $sueldo){
$data = array(
‘nombre’ => $nombre,
‘sueldo’ => $sueldo
);
return $this->db->insert(‘empleados’, $data);
}
[/cc]

Para comprobar si los datos se insertan correctamente, se puede usar la función mostrar_pagina_principal que desarrollamos anteriormente.

Mensajes de error

Si el usuario se equivoca al insertar los datos, es buena idea informarle adecuadamente de su error, CodeIgniter automatiza esto con la función «form_error()». Podemos usarla de la siguiente manera en la vista:
[cc]
echo form_error(‘nombre’);
echo form_label(‘Nombre’, ‘nombre’);
echo form_input(‘nombre’);echo ‘
‘;
echo form_error(‘sueldo’);
echo form_label(‘Sueldo’, ‘sueldo’);
echo form_input(‘sueldo’);echo ‘
‘;
[/cc]

Así podemos ver los errores en el formulario:

formularios2

Todos los mensajes de error se encuentran en el fichero «system/language/english/form_validation_lang.php». Estos mensajes se pueden cambiar directamente en el fichero o utilizando la función «set_message()»:
[cc]
//%s se traduce por el nombre ‘humano’ del campo
$this->form_validation->set_message(‘required’, ‘El campo %s es obligatorio’);
[/cc]

Funciones de validación propias

Por último, estudiaremos la manera de incluir funciones de validación propias. Digamos que queremos que el campo Nombre deba ser igual a «ADWE» para poder insertarlo. Para poder verificar esto podemos indicarle a la función «set_rules()» el método al que debe llamar para comprobarlo:

[cc]
$this->form_validation->set_rules(‘nombre’, ‘Nombre’, ‘required|min_length[3]|callback_igualqueadwe’);
[/cc]

Es importante añadir «callback_» antes del nombre de nuestra función. En nuestro método podemos establecer un mensaje de error personalizado, como hemos hecho anteriormente:

[cc]
function igualqueadwe($nombre){
if($nombre != «ADWE»){
$this->form_validation->set_message(«igualqueadwe», «El campo %s no es ‘ADWE'»);
return false;
}
else{
return true;
}
}
[/cc]

formularios3

Eso es todo por hoy, espero que os haya sido de utilidad, en el siguiente tutorial seguiremos adentrándonos en el framework CodeIgniter, hasta la próxima.

WordPress › Error

Ha habido un error crítico en esta web.

Aprende más sobre el diagnóstico de WordPress.