Laravel-Codice-Fiscaleは、イタリアのCodiceFiscale
(IE税コード)の管理のためのパッケージです。パッケージを使用すると、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 |
重要な更新:非デフォルト
IstatRemoteCSVList
City Decoderを使用して、ISTATから都市コードを動的にロードできます。
次のコマンドを実行して、パッケージの最新バージョンをインストールします。
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"
Codice Fiscaleを検証するには、検証ルール配列で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と入力フィールドから生成されたCodiceFiscaleが一致しない場合、検証は失敗します。
Codice FiscaleはrobertogalleaLaravelCodiceFiscaleCodiceFiscale
クラスに包み、有用なユーティリティ方法で強化できます。
use robertogallea LaravelCodiceFiscale CodiceFiscale ;
. . .
try {
$ cf = new CodiceFiscale ();
$ result = $ cf -> parse ( ' RSSMRA95E05F205Z ' );
var_dump ( $ result );
} catch ( Exception $ exception ) {
echo $ exception ;
}
有効なCodice -fiscaleの場合、次の結果が生成されます。
[
" 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
使用して、入力値からCodice Fiscale文字列を生成できます。
$ 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 );
提供されたFaker Extensionを使用して、工場で偽のCodice Fiscaleを生成できます。
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
)の生成に必要な情報をすべて、またはまったく提供できません。
都市コードを解読するための3つの戦略があります。
InternationalCitiesStaticList
:イタリアの都市の静的リスト。ItalianCitiesStaticList
:国際都市の静的リスト。IstatRemoteCSVList
:公式のISTAT CSVファイルからロードされたイタリアの都市のダイナミック(Webからロード)リスト。リストはキャッシュされていることに注意してください(デフォルトでは1日、変更する構成を参照してください)。CompositeCitiesList
:構成codicefiscale.cities-decoder-list
のベースCityDecoderInterface
を使用して、2つのCityDecoderInterface
クラス( IstatRemoteCSVList
およびInternationalCitiesStaticList
)の結果をマージします。デフォルトでは、パッケージはクラスの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',
]
}
}