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.