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
، إذا كنت ترغب في إضافة لغة جديدة ، يرجى إرسال العلاقات العامة لي.
في 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
class لإنشاء سلاسل 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 );
يمكنك إنشاء Codice 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 الرسمي. يرجى ملاحظة أن القائمة مخزنة مؤقتًا (يوم واحد افتراضيًا ، راجع التكوين للتغيير).CompositeCitiesList
: دمج نتائج فئتين CityDecoderInterface
(على سبيل المثال IstatRemoteCSVList
و InternationalCitiesStaticList
) باستخدام قاعدة CityDecoderInterface
الأساسية في codicefiscale.cities-decoder-list
. بشكل افتراضي ، تستخدم الحزمة Class InternationalCitiesStaticList
للبحث عن المدينة من الكود و Viceversa. ومع ذلك ، يمكنك استخدام فصلك الخاص لتغيير الاستراتيجية المستخدمة.
تحتاج فقط إلى تنفيذ CityDecoderInterface
وطريقة getList()
. ثم ، لاستخدامه ، فقط تمرير مثيل إلى فئة CodiceFiscale
.
على سبيل المثال:
class MyCityList implements CityDecoderInterface
{
public function getList ()
{
// Implementation
}
}
. . .
$ cf = new CodiceFiscale ( new MyCityList )
. . .
ملاحظة : إذا وجدت المدن المفقودة ، فيرجى عمل العلاقات العامة!
إذا كنت ترغب في دمج قائمة المدن ، فيمكنك استخدام 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',
]
}
}