O Laravel-CodiceFiscale é um pacote para o gerenciamento da italiana CodiceFiscale
(ou seja, código tributário). O pacote permite fácil validação e análise do CodiceFiscale. Também é adequado para o Laravel, pois fornece um validador personalizado conveniente para validação de solicitação.
Laravel | Pacote |
---|---|
11.x | 2.x |
10.x | 1.x |
9.x | 1.x |
8.x | 1.x |
7.x | 1.x |
6.x | 1.x |
Atualização importante : agora você pode carregar os códigos da cidade dinamicamente do ISTAT usando o decodificador da cidade não-defeituoso
IstatRemoteCSVList
.
Execute o seguinte comando para instalar a versão mais recente aplicável do pacote:
composer require robertogallea/laravel-codicefiscale:^2
Na sua configuração de aplicativos, adicione o provedor de serviços à matriz $providers
(apenas para o Laravel 5.4 ou abaixo) :
' providers ' => [
...
robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class,
],
As mensagens de erro de validação são traduzidas it
e en
idiomas, se você deseja adicionar um novo idioma, envie -me um PR.
No bootstrap/app.php
, registre o provedor de serviços
$ app -> register (robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class);
Para personalizar a configuração do pacote, você deve exportar o arquivo de configuração para config/codicefiscale.php
.
Isso pode ser alcançado lançando o seguinte comando:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="config"
Você pode configurar os seguintes parâmetros:
city-decoder
: a aula usada para decodificar códigos da cidade (consulte a análise do código da cidade), padrão para o InternationalCitiesStaticList
.date-format
: o formato de data usado para analisar as datas de nascimento, padrão para 'Ym-d'
.labels
: Os rótulos usados para pessoas male
e female
, inadimplentes para 'M'
e 'F'
. Você pode personalizar as mensagens de validação publicando as traduções de validação com este comando:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="lang"
Para validar uma fiscale da Codice, use a palavra -chave codice_fiscale
em sua matriz de regras de validação
public function rules ()
{
return [
' codicefiscale ' => ' codice_fiscale ' ,
//...
];
}
A partir da versão 1.9.0, você pode validar sua fiscal Codice em relação a outros campos de formulário para verificar se há uma correspondência ou não.
Você deve especificar todos os campos necessários:
first_name
last_name
birthdate
place
gender
fornecendo parâmetros à regra codice_fiscale
.
Por exemplo:
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 ' ,
//...
];
}
A validação falha se o codiceFiscale fornecido e o gerado a partir dos campos de entrada não corresponder.
Uma fiscal da Codice pode ser envolvida na classe robertogalleaLaravelCodiceFiscaleCodiceFiscale
para aprimorá -la com métodos de utilidade úteis.
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
try {
$ cf = new CodiceFiscale ();
$ result = $ cf -> parse ( ' RSSMRA95E05F205Z ' );
var_dump ( $ result );
} catch ( Exception $ exception ) {
echo $ exception ;
}
No caso de uma descrição válida do CodiceFale, produz o seguinte 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 )
}
]
Em caso de erro, CodiceFiscale::parse()
lança um CodiceFiscaleValidationException
, que retorna uma das constantes definidas com $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
Se você prefere que não deseja capturar exceções, pode 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 retorna os mesmos valores acima, você pode usar $cf->isValid()
para verificar se o codiceFiscale é válido e $cf->getError()
para obter o erro. Isso é especialmente útil em um modelo de lâmina:
@ 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
pode ser usada para gerar strings codice fiscale 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 );
Você pode gerar fiscal de codice falso em suas fábricas usando a extensão Faker fornecida:
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 : Você pode fornecer algumas, nenhuma ou nenhuma das informações necessárias para a geração de Codice Fiscale ( firstName
, lastName
, birthDate
, birthPlace
, gender
)
Existem três estratégias para decodificar o código da cidade:
InternationalCitiesStaticList
: uma lista estática de cidades italianas;ItalianCitiesStaticList
: uma lista estática de cidades internacionais;IstatRemoteCSVList
: Uma lista dinâmica (carregada da Web) de cidades italianas carregadas do arquivo oficial ISTAT CSV. Observe que a lista está em cache (um dia por padrão, consulte a configuração para alterar).CompositeCitiesList
: mescle os resultados de duas classes CityDecoderInterface
(por exemplo, IstatRemoteCSVList
e InternationalCitiesStaticList
) usando o CityDecoderInterface
de base na codicefiscale.cities-decoder-list
. Por padrão, o pacote usa a classe InternationalCitiesStaticList
para procurar a cidade do Código e Vice -Versa. No entanto, você pode usar sua própria classe para alterar a estratégia usada.
Você só precisa implementar o CityDecoderInterface
e seu método getList()
. Em seguida, para usá -lo, basta passar uma instância para a classe CodiceFiscale
.
Por exemplo:
class MyCityList implements CityDecoderInterface
{
public function getList ()
{
// Implementation
}
}
. . .
$ cf = new CodiceFiscale ( new MyCityList )
. . .
Nota : Se você encontrar cidades ausentes, faça um PR!
Se você deseja integrar a lista das cidades, pode usar a CompositeCitiesList
, mesclando os resultados de um dos decodificadores fornecidos e um decodificador personalizado.
Por exemplo:
// conf/codicefiscale.php
return [
'city-decoder' => 'robertogalleaLaravelCodiceFiscaleCityCodeDecodersCompositeCitiesList',
...
'cities-decoder-list' => [
'robertogalleaLaravelCodiceFiscaleCityCodeDecodersInternationalCitiesStaticList',
'YourNamespaceMyCustomList',
]
onde MyCustomList
é definido como:
...
class MyCustomList implements CityDecoderInterface
{
public function getList()
{
return [
'XYZ1' => 'My city 1',
'XYZ2' => 'My city 2',
]
}
}