CodeIgniter - Validación de formulario
La validación es un proceso importante al crear una aplicación web. Garantiza que los datos que obtenemos sean adecuados y válidos para almacenarlos o procesarlos. CodeIgniter ha facilitado mucho esta tarea. Entendamos este proceso con un ejemplo sencillo.
Ejemplo
Crear un archivo de vista myform.php y guarde el siguiente código en application/views/myform.php. Esta página mostrará un formulario donde el usuario puede enviar su nombre y validaremos esta página para asegurarnos de que no debe estar vacía durante el envío.
<html>
<head>
<title>My Form</title>
</head>
<body>
<form action = "" method = "">
<?php echo validation_errors(); ?>
<?php echo form_open('form'); ?>
<h5>Name</h5>
<input type = "text" name = "name" value = "" size = "50" />
<div><input type = "submit" value = "Submit" /></div>
</form>
</body>
</html>
Crear un archivo de vista formsuccess.php y guárdalo en application/views/formsuccess.php. Esta página se mostrará si el formulario se valida correctamente.
<html>
<head>
<title>My Form</title>
</head>
<body>
<h3>Your form was successfully submitted!</h3>
<p><?php echo anchor('form', 'Try it again!'); ?></p>
</body>
</html>
Crea un archivo de controlador Form.php y guárdalo en application/controller/Form.php. Este formulario mostrará errores si no se valida correctamente o si no se redirige aformsuccess.php página.
<?php
class Form extends CI_Controller {
public function index() {
/* Load form helper */
$this->load->helper(array('form'));
/* Load form validation library */
$this->load->library('form_validation');
/* Set validation rule for name field in the form */
$this->form_validation->set_rules('name', 'Name', 'required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('myform');
}
else {
$this->load->view('formsuccess');
}
}
}
?>
Agregue la siguiente línea en application/config/routes.php.
$route['validation'] = 'Form';
Ejecutemos este ejemplo visitando la siguiente URL en el navegador. Esta URL puede ser diferente según su sitio.
http://yoursite.com/index.php/validation
Producirá la siguiente pantalla:
Hemos agregado una validación en el controlador - Namees un campo obligatorio antes de enviar el formulario. Por lo tanto, si hace clic en el botón enviar sin ingresar nada en el campo de nombre, se le pedirá que ingrese el nombre antes de enviar, como se muestra en la pantalla a continuación.
Después de ingresar el nombre correctamente, será redirigido a la pantalla que se muestra a continuación.
En el ejemplo anterior, hemos utilizado la configuración de reglas requerida. Hay muchas reglas disponibles en CodeIgniter, que se describen a continuación.
Referencia de la regla de validación
La siguiente es una lista de todas las reglas nativas que están disponibles para usar:
Regla | Parámetro | Descripción | Ejemplo |
---|---|---|---|
required |
No | Devuelve FALSE si el elemento del formulario está vacío. | |
matches |
si | Devuelve FALSE si el elemento del formulario no coincide con el del parámetro. | coincide con [form_item] |
regex_match |
si | Devuelve FALSE si el elemento del formulario no coincide con la expresión regular. | regex_match [/ regex /] |
differs |
si | Devuelve FALSE si el elemento del formulario no difiere del del parámetro. | difiere [form_item] |
is_unique |
si | Devuelve FALSE si el elemento del formulario no es exclusivo de la tabla y el nombre del campo en el parámetro. Nota: esta regla requiere que el Generador de consultas esté habilitado para funcionar. | is_unique [table.field] |
min_length |
si | Devuelve FALSE si el elemento del formulario es más corto que el valor del parámetro. | min_length [3] |
max_length |
si | Devuelve FALSE si el elemento del formulario es más largo que el valor del parámetro. | max_length [12] |
exact_length |
si | Devuelve FALSE si el elemento del formulario no es exactamente el valor del parámetro. | longitud_exacta [8] |
greater_than |
si | Devuelve FALSE si el elemento del formulario es menor o igual que el valor del parámetro o no es numérico. | mayor_de [8] |
greater_than_equal_to |
si | Devuelve FALSE si el elemento del formulario es menor que el valor del parámetro o no es numérico. | mayor_que_igual_a [8] |
less_than |
si | Devuelve FALSE si el elemento del formulario es mayor o igual que el valor del parámetro o no es numérico. | menos_de [8] |
less_than_equal_to |
si | Devuelve FALSE si el elemento del formulario es mayor que el valor del parámetro o no es numérico. | menos_que_igual_a [8] |
in_list |
si | Devuelve FALSE si el elemento del formulario no está dentro de una lista predeterminada. | in_list [rojo, azul, verde] |
alpha |
No | Devuelve FALSE si el elemento del formulario contiene algo más que caracteres alfabéticos. | |
alpha_numeric |
No | Devuelve FALSE si el elemento del formulario contiene algo más que caracteres alfanuméricos. | |
alpha_numeric_spaces |
No | Devuelve FALSE si el elemento del formulario contiene algo más que caracteres alfanuméricos o espacios. Debe usarse después del recorte para evitar espacios al principio o al final | |
alpha_dash |
No | Devuelve FALSE si el elemento del formulario contiene algo más que caracteres alfanuméricos, guiones bajos o guiones. | |
numeric |
No | Devuelve FALSE si el elemento del formulario contiene algo más que caracteres numéricos. | |
integer |
No | Devuelve FALSE si el elemento del formulario contiene algo más que un número entero. | |
decimal |
No | Devuelve FALSE si el elemento del formulario contiene algo más que un número decimal. | |
is_natural |
No | Devuelve FALSE si el elemento del formulario contiene algo que no sea un número natural: 0, 1, 2, 3, etc. | |
is_natural_no_zero |
No | Devuelve FALSE si el elemento del formulario contiene algo que no sea un número natural, pero no cero: 1, 2, 3, etc. | |
valid_url |
No | Devuelve FALSE si el elemento del formulario no contiene una URL válida. | |
valid_email |
No | Devuelve FALSE si el elemento del formulario no contiene una dirección de correo electrónico válida. | |
valid_emails |
No | Devuelve FALSE si algún valor proporcionado en una lista separada por comas no es un correo electrónico válido. | |
valid_ip |
No | Devuelve FALSE si la IP proporcionada no es válida. Acepta un parámetro opcional de 'ipv4' o 'ipv6' para especificar un formato de IP. | |
valid_base64 |
No | Devuelve FALSE si la cadena proporcionada contiene algo más que caracteres Base64 válidos. |