uncategorized·

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.

0 Comments

No comments yet. Be the first to comment!

Newsletter

Stay updated with new articles.

Copyright © 2026 · Olivier Girardot's RamblingsPowered by Writizzy