Validateur de code SIREN pour symfony
Dans la série des codes qui peuvent servir, voilà une classe PHP à copier dans le dossier lib de Symfony, elle permet, via l'algorithme de Luhn, de vérifier si un Code SIREN est valide dans un formula...
Dans la série des codes qui peuvent servir, voilà une classe PHP à copier dans le dossier lib de Symfony, elle permet, via l'algorithme de Luhn, de vérifier si un Code SIREN est valide dans un formulaire.
text
/**
* Classe implémentant une vérification du code Siren par l'algorithme de Luhn
*
*/
class sfCodeSirenValidator extends sfValidator
{
public function execute($value, $error)
{
//if so the length of the string given is incorrect
if(strlen(trim($value))!=9){
$error=$this->getParameter('sirenlength_error');
return false;
}
$odd = !strlen($value)%2;
$sum = 0;
for($i=0;$i < strlen($value);++$i) {
$n=0+$value[$i];
$odd=!$odd;
if($odd) {
$sum+=$n;
} else {
$x=2*$n;
$sum+=$x>9?$x-9:$x;
}
}
if(($sum%10)==0){
return true;
} else {
//the siren code is not a proper formatted one
$error=$this->getParameter('siren_error');
return false;
}
}
public function initialize ($context , $parameters = null ){
//Initialize parent
parent::initialize($context);
$this->setParameter('sirenlength_error' , 'Incorrect size for a siren code ');
$this->setParameter('siren_error' , 'This is not a valid siren code');
//Set parameters
$this->getParameterHolder()->add($parameters);
return true;
}
}
Son utilisation est simple via un fichier validate.yml de la façon suivante en le couplant à une vérification du nombre:
text
fields:
codesiren:
sfNumberValidator:
nan_error: Le code siren est un numéro
sfCodeSirenValidator:
siren_error: Le code siren est invalide
sirenlength_error: La taille du code siren entré est incorrecte
Ce validateur permet ainsi d'être sûr de la validité d'un code SIREN et donc de l'identité de l'entreprise que l'on cherche à ajouter.
Newsletter
Stay updated with new articles.
No comments yet. Be the first to comment!