Laravel-Codicefiscale es un paquete para la gestión de la CodiceFiscale
italiana (es decir, el código tributario). El paquete permite una fácil validación y análisis de Codicefiscale. También es adecuado para Laravel, ya que proporciona un validador personalizado conveniente para la validación de solicitudes.
Laravado | Paquete |
---|---|
11.x | 2.x |
10.x | 1.x |
9.x | 1.x |
8.x | 1.x |
7.x | 1.x |
6.x | 1.x |
Actualización importante : ahora puede cargar dinámicamente los códigos de la ciudad de ISTAT utilizando el decodificador de la ciudad no default
IstatRemoteCSVList
.
Ejecute el siguiente comando para instalar la última versión aplicable del paquete:
composer require robertogallea/laravel-codicefiscale:^2
En la configuración de su aplicación, agregue el proveedor de servicios a la matriz $providers
(solo para Laravel 5.4 o menos) :
' providers ' => [
...
robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class,
],
Los mensajes de error de validación se traducen en it
y en
Idiomas, si desea agregar un nuevo idioma, envíeme un PR.
En bootstrap/app.php
, registre el proveedor de servicios
$ app -> register (robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class);
Para personalizar la configuración del paquete, debe exportar el archivo de configuración en config/codicefiscale.php
.
Esto se puede lograr lanzando el siguiente comando:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="config"
Puede configurar los siguientes parámetros:
city-decoder
: la clase utilizada para decodificar los códigos de la ciudad (ver análisis del código de la ciudad), predeterminado a InternationalCitiesStaticList
.date-format
: el formato de fecha utilizado para analizar las fechas de nacimiento, predeterminado a 'Ym-d'
.labels
: las etiquetas utilizadas para personas male
y female
, por defecto a 'M'
y 'F'
. Puede personalizar los mensajes de validación que publican las traducciones de validación con este comando:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="lang"
Para validar un Codice Fiscale, use la palabra clave codice_fiscale
en su matriz de reglas de validación
public function rules ()
{
return [
' codicefiscale ' => ' codice_fiscale ' ,
//...
];
}
Desde la versión 1.9.0 puede validar su Codice Fiscale en otros campos de formulario para verificar si hay una coincidencia o no.
Debe especificar todos los campos requeridos:
first_name
last_name
birthdate
place
gender
dando parámetros a la regla codice_fiscale
.
Por ejemplo:
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 validación falla si el Codicefiscale proporcionado y el generado a partir de los campos de entrada no coinciden.
Se puede envolver un Codice Fiscale en la clase robertogalleaLaravelCodiceFiscaleCodiceFiscale
para mejorarlo con métodos de utilidad útiles.
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
try {
$ cf = new CodiceFiscale ();
$ result = $ cf -> parse ( ' RSSMRA95E05F205Z ' );
var_dump ( $ result );
} catch ( Exception $ exception ) {
echo $ exception ;
}
En el caso de una codicefiscala válida, produce el siguiente resultado:
[
" 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 caso de un error, CodiceFiscale::parse()
lanza una CodiceFiscaleValidationException
, que devuelve una de las constantes definidas con $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 prefiere que no desea atrapar excepciones, puede usar CodiceFiscale::tryParse()
::
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
$ cf = new CodiceFiscale ();
$ result = $ cf -> tryParse ( ' RSSMRA95E05F205Z ' );
if ( $ result ) {
var_dump ( $ cf -> asArray ());
} else {
echo $ cf -> getError ();
}
que devuelve los mismos valores anteriores, puede usar $cf->isValid()
para verificar si la codicasa es válida y $cf->getError()
para obtener el error. Esto es especialmente útil en una plantilla de cuchilla:
@ 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
podría usarse para generar cadenas de fiscale Codice a partir de valores de entrada:
$ 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 );
Puede generar Codice Fiscale falso en sus fábricas utilizando la extensión Faker proporcionada:
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 ),
];
}
Nota : Puede proporcionar algunas, toda o ninguna de la información requerida para la generación de Codice Fiscale ( firstName
, lastName
, birthDate
, birthPlace
, gender
)
Hay tres estrategias para decodificar el código de la ciudad:
InternationalCitiesStaticList
: una lista estática de ciudades italianas;ItalianCitiesStaticList
: una lista estática de ciudades internacionales;IstatRemoteCSVList
: una lista dinámica (cargada desde la web) de ciudades italianas cargadas del archivo CSV ISTAT oficial. Tenga en cuenta que la lista está en caché (un día de forma predeterminada, consulte la configuración para cambiar).CompositeCitiesList
: fusione los resultados de dos clases CityDecoderInterface
(por ejemplo, IstatRemoteCSVList
e InternationalCitiesStaticList
) utilizando la base CityDecoderInterface
de configuración en la clave de configuración codicefiscale.cities-decoder-list
. De manera predeterminada, el paquete utiliza la Clase InternationalCitiesStaticList
para buscar la ciudad desde el código y viceversa. Sin embargo, puede usar su propia clase para cambiar la estrategia utilizada.
Solo necesita implementar la CityDecoderInterface
y su método getList()
. Luego, para usarlo, simplemente pase una instancia a la clase CodiceFiscale
.
Por ejemplo:
class MyCityList implements CityDecoderInterface
{
public function getList ()
{
// Implementation
}
}
. . .
$ cf = new CodiceFiscale ( new MyCityList )
. . .
Nota : Si encuentra ciudades faltantes, ¡haga un PR!
Si desea integrar la lista de las ciudades, puede usar CompositeCitiesList
fusionando los resultados de uno de los decodificadores proporcionados y un decodificador personalizado.
Por ejemplo:
// conf/codicefiscale.php
return [
'city-decoder' => 'robertogalleaLaravelCodiceFiscaleCityCodeDecodersCompositeCitiesList',
...
'cities-decoder-list' => [
'robertogalleaLaravelCodiceFiscaleCityCodeDecodersInternationalCitiesStaticList',
'YourNamespaceMyCustomList',
]
donde MyCustomList
se define como:
...
class MyCustomList implements CityDecoderInterface
{
public function getList()
{
return [
'XYZ1' => 'My city 1',
'XYZ2' => 'My city 2',
]
}
}