Laravel-CodiceFiscale เป็นแพ็คเกจสำหรับการจัดการของ CodiceFiscale
ของอิตาลี (เช่นรหัสภาษี) แพ็คเกจช่วยให้การตรวจสอบความถูกต้องและการแยกวิเคราะห์ของ CodiceFiscale ได้ง่าย นอกจากนี้ยังเหมาะสำหรับ Laravel เนื่องจากมีตัวตรวจสอบความถูกต้องแบบกำหนดเองที่สะดวกสำหรับการตรวจสอบความถูกต้องของคำขอ
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 แบบไดนามิกโดยใช้ตัวถอดรหัสเมืองที่ไม่ใช่ default
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"
ในการตรวจสอบความถูกต้องของ 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 ที่ให้ไว้และหนึ่งที่สร้างจากฟิลด์อินพุตไม่ตรงกัน
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
สามารถใช้เพื่อสร้างสตริง 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 );
คุณสามารถสร้าง fiscale codice ปลอมในโรงงานของคุณโดยใช้ส่วนขยาย 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
: รายการไดนามิก (โหลดจากเว็บ) ของเมืองอิตาลีที่โหลดจากไฟล์ CSV อย่างเป็นทางการ โปรดทราบว่ารายการถูกแคช (หนึ่งวันโดยค่าเริ่มต้นดูการกำหนดค่าเพื่อเปลี่ยน)CompositeCitiesList
: รวมผลลัพธ์จากคลาส CityDecoderInterface
สองคลาส (ตัวอย่างเช่น IstatRemoteCSVList
และ InternationalCitiesStaticList
) โดยใช้ Base CityDecoderInterface
ในการกำหนดค่า codicefiscale.cities-decoder-list
โดยค่าเริ่มต้นแพ็คเกจจะใช้ Class InternationalCitiesStaticList
เพื่อค้นหาเมืองจากรหัสและ ViceVersa อย่างไรก็ตามคุณสามารถใช้คลาสของคุณเองเพื่อเปลี่ยนกลยุทธ์ที่ใช้
คุณเพียงแค่ต้องใช้เมธอด 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',
]
}
}