FuelPHP - Validação

Validationé uma das tarefas frequentes e mais repetidas em um aplicativo da web. O usuário insere os dados necessários no formulário e os envia. Em seguida, o aplicativo da web precisa validar os dados antes de processá-los. Por exemplo, o usuário insere os dados do funcionário e o post_action precisa validar antes de salvá-lo no banco de dados. O FuelPHP fornece uma classe realmente simples, Validation, para esse propósito.

No FuelPHP, o conceito de validação é muito simples e fornece vários métodos por meio da classe Validation para validar adequadamente o formulário. A seguir está o fluxo de trabalho da validação,

Step 1 - Crie um novo objeto de validação usando forge método.

$val = Validation::forge();

Step 2 - Adicione os campos que precisam ser validados usando o método add.

$val->add('name', 'Employee name');

Step 3 - Defina as regras de validação para os campos adicionados 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 - Chame o método run para validar os dados.

// run validation on just post 
if ($val->run()) { 
   // success 
} else { 
   // falier 
}

Step 5 - Use validado e erro para obter os campos válidos e inválidos, respectivamente.

$vars = $val->validated(); 
$vars = $val->error();

Regras

FuelPHP contém muitas regras para validar e também oferece uma opção para criar novas regras. As regras suportadas pela classe de validação são as seguintes,

  • required - Valor a ser inserido

  • required_with- Defina outro campo como campo complementar. Se o campo for definido, os campos complementares também precisam ser definidos

  • match_value - Defina o valor a ser combinado com o valor do campo

  • match_pattern - Defina o valor a ser correspondido como uma expressão regular com o valor do campo

  • match_field - Defina o valor de outro campo como valor a ser combinado com o valor do campo

  • match_collection - Defina o valor a ser correspondido como coleção com o valor do campo

  • min_length - Defina o comprimento mínimo do valor do campo

  • max_length - Defina o comprimento máximo do valor do campo

  • exact_length - Defina o comprimento exato do valor do campo

  • valid_date - Defina o valor do campo para uma data válida

  • valid_email - Defina o valor do campo como um e-mail válido

  • valid_emails - Defina o valor do campo para e-mails válidos, separados por vírgula

  • valid_url - Defina o valor do campo para um URL válido

  • valid_ip - Defina o valor do campo para um IP válido

  • numeric_min - Defina o valor mínimo do valor do campo

  • numeric_max - Defina o valor máximo do valor do campo

  • numeric_between - Defina o valor mínimo e máximo do valor do campo

  • valid_string - Semelhante ao regex, mas mais simples

$val->add('username', 'User name')->add_rule('valid_string', array('alpha, dots');

Aqui, alfa se refere a caracteres alfabéticos e os pontos se referem a (.). A string válida é apenas a string que contém o caractere alfabético e (.). As outras opções são maiúsculas, minúsculas, especiais, numéricos, espaços, etc.

Exemplo de Trabalho

Podemos atualizar o recurso de adicionar funcionário para incluir a validação. Basta atualizar opost_add método do controlador de funcionário como segue.

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'); 
   } 
}

Aqui, especificamos o namee idade como campos obrigatórios. oagedeve estar entre 20 e 30. Se ambas as regras forem válidas, os dados do funcionário serão salvos e redirecionados para a página da lista de funcionários. Caso contrário, os dados do funcionário serão rejeitados e redirecionados para adicionar a página do funcionário.