Laravel-Codicefiscale ist ein Paket für die Verwaltung des italienischen CodiceFiscale
(dh Steuergesetzbuch). Das Paket ermöglicht eine einfache Validierung und Parsen des Codicefiscale. Es ist auch für Laravel geeignet, da es einem bequemen benutzerdefinierten Validator für die Anforderungsvalidierung bietet.
Laravel | Paket |
---|---|
11.x | 2.x |
10.x | 1.x |
9.x | 1.x |
8.x | 1.x |
7.x | 1.x |
6.x | 1.x |
Wichtiges Update : Jetzt können Sie Stadtcodes von ISTAT dynamisch mit dem nicht defekten
IstatRemoteCSVList
City Decoder laden.
Führen Sie den folgenden Befehl aus, um die neueste anwendbare Version des Pakets zu installieren:
composer require robertogallea/laravel-codicefiscale:^2
Fügen Sie in Ihrer App -Konfiguration den Dienstanbieter zum $providers
-Array hinzu (nur für Laravel 5.4 oder unten) :
' providers ' => [
...
robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class,
],
Die Validierungsfehlermeldungen werden it
übersetzt und in Sprachen en
. Wenn Sie eine neue Sprache hinzufügen möchten, senden Sie mir bitte eine PR.
Registrieren Sie den Dienstanbieter in bootstrap/app.php
$ app -> register (robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class);
Um die Paketkonfiguration anzupassen, müssen Sie die Konfigurationsdatei in config/codicefiscale.php
exportieren.
Dies kann erreicht werden, indem der folgende Befehl gestartet wird:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="config"
Sie können die folgenden Parameter konfigurieren:
city-decoder
: Die Klasse, die für die Dekodierung von Stadtcodes verwendet wird (siehe Analyse des Stadtcode), standardmäßig auf InternationalCitiesStaticList
.date-format
: Das Datumsformat, das zum Parsen von Geburtsdaten verwendet wird, standardmäßig mit 'Ym-d'
.labels
: Die für male
und female
Personen verwendeten Etiketten sind standardmäßig mit 'M'
und 'F'
. Sie können die Validierungsmeldungen anpassen, die die Validierungsübersetzungen mit diesem Befehl veröffentlichen:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="lang"
Um eine codice_fiscale
Fiscale zu validieren
public function rules ()
{
return [
' codicefiscale ' => ' codice_fiscale ' ,
//...
];
}
Aus Version 1.9.0 können Sie Ihre Codice Fiscale gegen andere Formularfelder validieren, um zu überprüfen, ob eine Übereinstimmung vorliegt oder nicht.
Sie müssen alle erforderlichen Felder angeben:
first_name
last_name
birthdate
place
gender
Parameter für die codice_fiscale
-Regel geben.
Zum Beispiel:
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 ' ,
//...
];
}
Die Validierung schlägt fehl, wenn die bereitgestellten Codicefiscale und die aus den Eingangsfeldern generierten nicht übereinstimmen.
Eine Codice Fiscale kann in die robertogalleaLaravelCodiceFiscaleCodiceFiscale
-Klasse eingewickelt werden, um sie mit nützlichen Nutzmethoden zu verbessern.
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
try {
$ cf = new CodiceFiscale ();
$ result = $ cf -> parse ( ' RSSMRA95E05F205Z ' );
var_dump ( $ result );
} catch ( Exception $ exception ) {
echo $ exception ;
}
Im Falle eines gültigen Codicefiscale erzeugt es das folgende Ergebnis:
[
" 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 )
}
]
Bei einem Fehler wirft CodiceFiscale::parse()
eine CodiceFiscaleValidationException
aus, die einen der definierten Konstanten mit $exception->getCode()
zurückgibt:
CodiceFiscaleException::NO_ERROR
CodiceFiscaleException::NO_CODE
CodiceFiscaleException::WRONG_SIZE
CodiceFiscaleException::BAD_CHARACTERS
CodiceFiscaleException::BAD_OMOCODIA_CHAR
CodiceFiscaleException::WRONG_CODE
CodiceFiscaleException::MISSING_CITY_CODE
Wenn Sie lieber keine Ausnahmen fangen möchten, können Sie CodiceFiscale::tryParse()
verwenden:
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
$ cf = new CodiceFiscale ();
$ result = $ cf -> tryParse ( ' RSSMRA95E05F205Z ' );
if ( $ result ) {
var_dump ( $ cf -> asArray ());
} else {
echo $ cf -> getError ();
}
Was die gleichen Werte wie oben zurückgibt, können Sie $cf->isValid()
verwenden, um zu überprüfen, ob die CodiceFiscale gültig ist und $cf->getError()
um den Fehler zu erhalten. Dies ist besonders nützlich in einer Blattvorlage:
@ 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
Class CodiceFiscale
könnte verwendet werden, um Codice Fiscale -Zeichenfolgen aus Eingabewerten zu generieren:
$ 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 );
Mit der bereitgestellten Faker -Erweiterung können Sie gefälschte Codice Fiscale in Ihren Fabriken generieren:
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 ),
];
}
Hinweis : Sie können einige oder keine der Informationen zur Erzeugung von Codice Fiscale ( firstName
, lastName
, birthDate
, birthPlace
, gender
) zur Verfügung stellen.
Es gibt drei Strategien zur Dekodierung des Stadtcode:
InternationalCitiesStaticList
: Eine statische Liste italienischer Städte;ItalianCitiesStaticList
: Eine statische Liste internationaler Städte;IstatRemoteCSVList
: Eine dynamische (aus Web) Liste italienischer Städte, die aus der offiziellen ISTAT -CSV -Datei geladen wurden. Bitte beachten Sie, dass die Liste zwischengespeichert ist (siehe standardmäßig siehe Konfiguration, um sich zu ändern).CompositeCitiesList
InternationalCitiesStaticList
Zusammenführen Sie die Ergebnisse IstatRemoteCSVList
CityDecoderInterface
CityDecoderInterface
-Klassen (z codicefiscale.cities-decoder-list
Standardmäßig verwendet das Paket die Class InternationalCitiesStaticList
, um die Stadt aus dem Code und Vizeversa zu suchen. Sie könnten jedoch Ihre eigene Klasse verwenden, um die verwendete Strategie zu ändern.
Sie müssen nur die CityDecoderInterface
und seine getList()
-Methode implementieren. Um es dann zu verwenden, geben Sie einfach eine Instanz an die CodiceFiscale
-Klasse weiter.
Zum Beispiel:
class MyCityList implements CityDecoderInterface
{
public function getList ()
{
// Implementation
}
}
. . .
$ cf = new CodiceFiscale ( new MyCityList )
. . .
Hinweis : Wenn Sie fehlende Städte finden, machen Sie bitte eine PR!
Wenn Sie die Liste der Städte integrieren möchten, können Sie die CompositeCitiesList
verwenden, indem Sie die Ergebnisse eines der bereitgestellten Decoder und eines benutzerdefinierten Decoders zusammenführen.
Zum Beispiel:
// conf/codicefiscale.php
return [
'city-decoder' => 'robertogalleaLaravelCodiceFiscaleCityCodeDecodersCompositeCitiesList',
...
'cities-decoder-list' => [
'robertogalleaLaravelCodiceFiscaleCityCodeDecodersInternationalCitiesStaticList',
'YourNamespaceMyCustomList',
]
wo MyCustomList
definiert ist als:
...
class MyCustomList implements CityDecoderInterface
{
public function getList()
{
return [
'XYZ1' => 'My city 1',
'XYZ2' => 'My city 2',
]
}
}