Laravel-Codicefiscale-это пакет для управления итальянским CodiceFiscale
(т.е. налоговый кодекс). Пакет обеспечивает легкую проверку и анализ CodiceFiscale. Он также подходит для Laravel, так как предоставляет удобный пользовательский валидатор для проверки запроса.
Ларавел | Упаковка |
---|---|
11.x | 2.x. |
10.x. | 1.x |
9.x | 1.x |
8.x. | 1.x |
7.x. | 1.x |
6.x. | 1.x |
Важное обновление : теперь вы можете динамически загружать городские коды из ISTAT, используя декодер
IstatRemoteCSVList
.
Запустите следующую команду, чтобы установить последнюю применимую версию пакета:
composer require robertogallea/laravel-codicefiscale:^2
В конфигурации приложения добавьте поставщика услуг в массив $providers
(только для Laravel 5.4 или ниже) :
' providers ' => [
...
robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class,
],
Сообщения об ошибках проверки переводятся в it
en
, если вы хотите добавить новый язык, пришлите мне PR.
В bootstrap/app.php
зарегистрируйте поставщик услуг
$ app -> register (robertogallea LaravelCodiceFiscale CodiceFiscaleServiceProvider ::class);
Чтобы настроить конфигурацию пакета, необходимо экспортировать файл конфигурации в config/codicefiscale.php
.
Это может быть достигнуто, запустив следующую команду:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="config"
Вы можете настроить следующие параметры:
city-decoder
: класс, используемый для декодирования кодов города (см. Подбор кода города), по умолчанию в InternationalCitiesStaticList
.date-format
: формат даты, используемый для диапазона родов, по умолчанию до 'Ym-d'
.labels
: этикетки, используемые для male
и female
, по умолчанию 'M'
и 'F'
. Вы можете настроить сообщения о проверке, публикующие переводы проверки с помощью этой команды:
php artisan vendor:publish --provider="robertogalleaLaravelCodiceFiscaleCodiceFiscaleServiceProvider" --tag="lang"
Чтобы проверить Fiscale Codice, используйте ключевое слово codice_fiscale
в массиве правил проверки
public function rules ()
{
return [
' codicefiscale ' => ' codice_fiscale ' ,
//...
];
}
Из версии 1.9.0 вы можете проверить свой Codice Fiscale против других полей формы, чтобы проверить, есть ли совпадение или нет.
Вы должны указать все необходимые поля:
first_name
last_name
birthdate
place
gender
давая параметры правилу codice_fiscale
.
Например:
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 ' ,
//...
];
}
Проверка не сбои, если предоставленная CodiceFiscale и такая, сгенерированная из входных полей, не совпадают.
Codice Fiscale может быть завернут в класс robertogalleaLaravelCodiceFiscaleCodiceFiscale
чтобы улучшить его с помощью полезных методов полезности.
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
try {
$ cf = new CodiceFiscale ();
$ result = $ cf -> parse ( ' RSSMRA95E05F205Z ' );
var_dump ( $ result );
} catch ( Exception $ exception ) {
echo $ exception ;
}
В случае действительного CodiceFiscale он дает следующий результат:
[
" 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 )
}
]
В случае ошибки CodiceFiscale::parse()
бросает CodiceFiscaleValidationException
, которое возвращает одну из определенных констант с $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
Если вы предпочитаете ловить исключения, вы можете использовать CodiceFiscale::tryParse()
:
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
$ cf = new CodiceFiscale ();
$ result = $ cf -> tryParse ( ' RSSMRA95E05F205Z ' );
if ( $ result ) {
var_dump ( $ cf -> asArray ());
} else {
echo $ cf -> getError ();
}
который возвращает те же значения, что и выше, вы можете использовать $cf->isValid()
, чтобы проверить, является ли CodiceFiscale действительным, и $cf->getError()
чтобы получить ошибку. Это особенно полезно в шаблоне лезвия:
@ 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
Класс CodiceFiscale
может быть использован для генерации строк Fiscale Codice от входных значений:
$ 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 );
Вы можете генерировать фальшивый Fiscale на своих заводах, используя предоставленное расширение Faker:
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 ),
];
}
Примечание . Вы можете предоставить некоторую или ни одну из информации, необходимой для генерации Codice Fiscale ( firstName
, lastName
, birthDate
, birthPlace
, gender
)
Есть три стратегии для декодирования кода города:
InternationalCitiesStaticList
: статический список итальянских городов;ItalianCitiesStaticList
: статический список международных городов;IstatRemoteCSVList
: динамический (загруженный из веб -сайта) список итальянских городов, загруженных из официального файла ISTAT CSV. Обратите внимание, что список кэшируется (по умолчанию в один день, см. Config to Manage).CompositeCitiesList
: объедините результаты двух классов CityDecoderInterface
(например, IstatRemoteCSVList
и InternationalCitiesStaticList
) с использованием Base CityDecoderInterface
в ключе конфигурации codicefiscale.cities-decoder-list
. По умолчанию в пакете используется класс InternationalCitiesStaticList
для поиска города из кода и наоборот. Тем не менее, вы можете использовать свой собственный класс для изменения используемой стратегии.
Вам просто нужно внедрить метод CityDecoderInterface
и его getList()
. Затем, чтобы использовать его, просто передайте экземпляр в класс CodiceFiscale
.
Например:
class MyCityList implements CityDecoderInterface
{
public function getList ()
{
// Implementation
}
}
. . .
$ cf = new CodiceFiscale ( new MyCityList )
. . .
Примечание . Если вы найдете пропущенные города, сделайте PR!
Если вы хотите интегрировать список городов, вы можете использовать CompositeCitiesList
, объединив результаты одного из предоставленных декодеров и пользовательского декодера.
Например:
// conf/codicefiscale.php
return [
'city-decoder' => 'robertogalleaLaravelCodiceFiscaleCityCodeDecodersCompositeCitiesList',
...
'cities-decoder-list' => [
'robertogalleaLaravelCodiceFiscaleCityCodeDecodersInternationalCitiesStaticList',
'YourNamespaceMyCustomList',
]
где MyCustomList
определяется как:
...
class MyCustomList implements CityDecoderInterface
{
public function getList()
{
return [
'XYZ1' => 'My city 1',
'XYZ2' => 'My city 2',
]
}
}