FuelPHP - Validación
Validationes una de las tareas más frecuentes y repetidas en una aplicación web. El usuario ingresa los datos requeridos en el formulario y lo envía. Luego, la aplicación web necesita validar los datos antes de procesarlos. Por ejemplo, el usuario ingresa los datos del empleado y el post_action necesita validarlo antes de guardarlo en la base de datos. FuelPHP proporciona una clase realmente simple, Validación para este propósito.
En FuelPHP, el concepto de validación es muy simple y proporciona varios métodos a través de la clase Validation para validar correctamente el formulario. A continuación se muestra el flujo de trabajo de la validación,
Step 1 - Cree un nuevo objeto de validación usando forge método.
$val = Validation::forge();
Step 2 - Agregue los campos que necesitan ser validados usando el método add.
$val->add('name', 'Employee name');
Step 3 - Establezca las reglas de validación para los campos agregados usando add_rule método.
$val->add('name', 'Employee name')->add_rule('required');
$val->add('age', 'Employee age')->add_rule('required')
->add_rule('numeric_min', 20)
->add_rule('numeric_max', 30);
Step 4 - Llame al método de ejecución para validar los datos.
// run validation on just post
if ($val->run()) {
// success
} else {
// falier
}
Step 5 - Utilice validated y error para obtener los campos válidos e inválidos respectivamente.
$vars = $val->validated();
$vars = $val->error();
Reglas
FuelPHP contiene muchas reglas para validar y también proporciona una opción para crear nuevas reglas. Las reglas admitidas por la clase de validación son las siguientes,
required - Valor a ingresar
required_with- Establecer otro campo como campo complementario. Si el campo está configurado, los campos complementarios también deben configurarse
match_value - Establecer el valor para que coincida con el valor del campo
match_pattern - Establecer el valor para que coincida como una expresión regular con el valor del campo
match_field - Establecer el valor de otro campo como valor para que coincida con el valor del campo
match_collection - Establecer el valor para que coincida como colección con el valor del campo
min_length - Establecer la longitud mínima del valor del campo
max_length - Establecer la longitud máxima del valor del campo
exact_length - Establecer la longitud exacta del valor del campo
valid_date - Establecer el valor del campo en una fecha válida
valid_email - Establecer el valor del campo en un correo electrónico válido
valid_emails - Establezca el valor del campo en correos electrónicos válidos, separados por comas
valid_url - Establecer el valor del campo en una URL válida
valid_ip - Establecer el valor del campo en una IP válida
numeric_min - Establecer el valor mínimo del valor del campo
numeric_max - Establecer el valor máximo del valor del campo
numeric_between - Establecer el valor mínimo y máximo del valor del campo
valid_string - Similar a regex pero más simple
$val->add('username', 'User name')->add_rule('valid_string', array('alpha, dots');
Aquí, alfa se refiere a caracteres alfabéticos y los puntos se refieren a (.). La cadena válida es solo la cadena que contiene el carácter alfabético y (.). Las otras opciones son mayúsculas, minúsculas, especiales, numéricas, espacios, etc.
Ejemplo de trabajo
Podemos actualizar la función de agregar empleados para incluir la validación. Solo actualiza elpost_add método del controlador de empleados de la siguiente manera.
public function post_add() {
$val = Validation::forge();
$val->add('name', 'Employee name')->add_rule('required');
$val->add('age', 'Employee age')->add_rule('required')
->add_rule('numeric_min', 20)
->add_rule('numeric_max', 30);
if ($val->run()) {
$name = Input::post('name');
$age = Input::post('age');
$model = new model_employee();
$model->name = $name;
$model->age = $age;
$model->save();
Response::redirect('employee/list');
} else {
Response::redirect('employee/add');
}
}
Aquí, hemos especificado el namey edad como los campos obligatorios. losagedebe estar entre 20 y 30. Si ambas reglas son válidas, los datos del empleado se guardarán y se redireccionarán a la página de la lista de empleados. De lo contrario, los datos de los empleados serán rechazados y redirigidos para agregar la página del empleado.