Laravel-CodiceFiscale est un ensemble de gestion de la CodiceFiscale
italienne (c.-à-d. Code fiscal). Le package permet une validation et une analyse faciles de la codicefiscale. Il est également adapté à Laravel car il fournit un validateur personnalisé pratique pour la validation de la demande.
Laravel | Emballer |
---|---|
11.x | 2.x |
10.x | 1.x |
9.x | 1.x |
8.x | 1.x |
7.x | 1.x |
6.x | 1.x |
Mise à jour importante : Vous pouvez désormais charger dynamiquement les codes de la ville à partir d'ISTAT à l'aide du décodeur de la ville
IstatRemoteCSVList
non défaut.
Exécutez la commande suivante pour installer la dernière version applicable du package:
composer require robertogallea/laravel-codicefiscale:^2
Dans votre configuration d'application, ajoutez le fournisseur de services au tableau $providers
(uniquement pour Laravel 5.4 ou moins) :
' providers ' => [
...
robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class,
],
Les messages d'erreur de validation sont traduits dans it
langues et en
, si vous souhaitez ajouter une nouvelle langue, veuillez m'envoyer un PR.
Dans bootstrap/app.php
, enregistrez le fournisseur de services
$ app -> register (robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class);
Pour personnaliser la configuration du package, vous devez exporter le fichier de configuration dans config/codicefiscale.php
.
Cela peut être réalisé en lançant la commande suivante:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="config"
Vous pouvez configurer les paramètres suivants:
city-decoder
: La classe utilisée pour décoder les codes de la ville (voir l'analyse du code de la ville), par défaut à InternationalCitiesStaticList
.date-format
: Le format de date utilisé pour l'analyse des dates de naissance, par défaut 'Ym-d'
.labels
: les étiquettes utilisées pour male
et female
, par défaut 'M'
et 'F'
. Vous pouvez personnaliser les messages de validation publiant les traductions de validation avec cette commande:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="lang"
Pour valider une codice fiscale, utilisez le mot-clé codice_fiscale
dans votre tableau de règles de validation
public function rules ()
{
return [
' codicefiscale ' => ' codice_fiscale ' ,
//...
];
}
À partir de la version 1.9.0, vous pouvez valider votre codice fiscale contre d'autres champs de formulaire pour vérifier s'il y a une correspondance ou non.
Vous devez spécifier tous les champs requis:
first_name
last_name
birthdate
place
gender
Donner des paramètres à la règle codice_fiscale
.
Par exemple:
public function rules ()
{
return [
' codicefiscale ' => ' codice_fiscale:first_name=first_name_field,last_name=last_name_field,birthdate=birthdate_field,place=place_field,gender=gender_field ' ,
' first_name_field ' => ' required|string ' ,
' last_name_field ' => ' required|string ' ,
' birthdate_field ' => ' required|date ' ,
' place_field ' => ' required|string ' ,
' gender_field ' => ' required|string|max:1 ' ,
//...
];
}
La validation échoue si la codicefiscale fournie et celle générée à partir des champs d'entrée ne correspond pas.
Une codice fiscale peut être enveloppée dans la classe robertogalleaLaravelCodiceFiscaleCodiceFiscale
pour l'améliorer avec des méthodes d'utilité utiles.
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
try {
$ cf = new CodiceFiscale ();
$ result = $ cf -> parse ( ' RSSMRA95E05F205Z ' );
var_dump ( $ result );
} catch ( Exception $ exception ) {
echo $ exception ;
}
En cas de codicefiscale valide, il produit le résultat suivant:
[
" gender " => " M "
"birth_place" => " F205 "
"birth_place_complete" => " Milano " ,
" day " => " 05 "
"month" => " 05 "
"year" => " 1995 "
"birthdate" => Carbon @ 799632000 {
date: 1995 - 05 - 05 00 : 00 : 00.0 UTC (+ 00 : 00 )
}
]
En cas d'erreur, CodiceFiscale::parse()
lance une CodiceFiscaleValidationException
, qui renvoie l'une des constantes définies avec $exception->getCode()
:
CodiceFiscaleException::NO_ERROR
CodiceFiscaleException::NO_CODE
CodiceFiscaleException::WRONG_SIZE
CodiceFiscaleException::BAD_CHARACTERS
CodiceFiscaleException::BAD_OMOCODIA_CHAR
CodiceFiscaleException::WRONG_CODE
CodiceFiscaleException::MISSING_CITY_CODE
Si vous préférez ne pas vouloir prendre des exceptions, vous pouvez utiliser CodiceFiscale::tryParse()
:
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
$ cf = new CodiceFiscale ();
$ result = $ cf -> tryParse ( ' RSSMRA95E05F205Z ' );
if ( $ result ) {
var_dump ( $ cf -> asArray ());
} else {
echo $ cf -> getError ();
}
qui renvoie les mêmes valeurs que ci-dessus, vous pouvez utiliser $cf->isValid()
pour vérifier si la codicefiscale est valide et $cf->getError()
pour obtenir l'erreur. Ceci est particulièrement utile dans un modèle de lame:
@ php ( $ cf = new robertogallea LaravelCodiceFiscale CodiceFiscale ())
@ if ( $ cf -> tryParse ( $ codicefiscale ))
<p><i class="fa fa-check" style="color:green"></i>{{ $ cf -> getCodiceFiscale ()}}</p>
@else
<p><i class="fa fa-check" style="color:red"></i>{{ $ cf -> getError ()-> getMessage ()}}</p>
@endif
CLASSE CodiceFiscale
pourrait être utilisée pour générer des chaînes fiscales de codice à partir des valeurs d'entrée:
$ first_name = ' Mario ' ;
$ last_name = ' Rossi ' ;
$ birth_date = ' 1995-05-05 ' ; // or Carbon::parse('1995-05-05')
$ birth_place = ' F205 ' ; // or 'Milano'
$ gender = ' M ' ;
$ cf_string = CodiceFiscale :: generate ( $ first_name , $ last_name , $ birth_date , $ birth_place , $ gender );
Vous pouvez générer une fausse codice fiscale dans vos usines en utilisant l'extension Faker fournie:
class PersonFactory extends Factory
{
public function definition (): array
{
return [
' first_name ' => $ firstName = fake ()-> firstName (),
' last_name ' => $ lastName = fake ()-> lastName (),
' fiscal_number ' => fake ()-> codiceFiscale (firstName: $ firstName , lastName: $ lastName ),
];
}
Remarque : Vous pouvez fournir des informations ou aucune des informations requises pour la génération de codice fiscale ( firstName
, lastName
, birthDate
, birthPlace
, gender
)
Il existe trois stratégies pour décoder le code de la ville:
InternationalCitiesStaticList
: une liste statique des villes italiennes;ItalianCitiesStaticList
: une liste statique des villes internationales;IstatRemoteCSVList
: une liste dynamique (chargée du Web) des villes italiennes chargées à partir du fichier officiel de CSV ISTAT. Veuillez noter que la liste est mise en cache (un jour par défaut, voir Config pour changer).CompositeCitiesList
: fusionnez les résultats de deux classes CityDecoderInterface
(par exemple IstatRemoteCSVList
et InternationalCitiesStaticList
) en utilisant la base de la liste CityDecoderInterface
dans la clé de configuration codicefiscale.cities-decoder-list
. Par défaut, le package utilise la classe InternationalCitiesStaticList
pour rechercher la ville à partir du code et de viceversa. Cependant, vous pouvez utiliser votre propre classe pour modifier la stratégie utilisée.
Il vous suffit d'implémenter la méthode CityDecoderInterface
et sa méthode getList()
. Ensuite, pour l'utiliser, transmettez simplement une instance à la classe CodiceFiscale
.
Par exemple:
class MyCityList implements CityDecoderInterface
{
public function getList ()
{
// Implementation
}
}
. . .
$ cf = new CodiceFiscale ( new MyCityList )
. . .
Remarque : Si vous trouvez des villes manquantes, veuillez faire un PR!
Si vous souhaitez intégrer la liste des villes, vous pouvez utiliser la CompositeCitiesList
en fusionnant les résultats de l'un des décodeurs fournis et d'un décodeur personnalisé.
Par exemple:
// conf/codicefiscale.php
return [
'city-decoder' => 'robertogalleaLaravelCodiceFiscaleCityCodeDecodersCompositeCitiesList',
...
'cities-decoder-list' => [
'robertogalleaLaravelCodiceFiscaleCityCodeDecodersInternationalCitiesStaticList',
'YourNamespaceMyCustomList',
]
où MyCustomList
est défini comme:
...
class MyCustomList implements CityDecoderInterface
{
public function getList()
{
return [
'XYZ1' => 'My city 1',
'XYZ2' => 'My city 2',
]
}
}