اعتبارسنجی شماره تلفن در لاراول
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 3 دقیقه

اعتبارسنجی شماره تلفن در لاراول

با استفاده از پکیج Laravel-Phone میتونید عملگرهای شماره تلفن رو به لاراول و Lumen اضافه کنید.

نصب و راه اندازی

با استفاده از دستور کامپوزر زیر در کنسول پکیج رو نصب کنید :

composer require propaganistas/laravel-phone

برای استفاده پکیج در لاراول باید فایل app/config.php رو باز کرده و کد زیر رو به آرایه Providers اضافه کنید (برای لاراول 5.4 به قبل) :

'providers' => [

   ...

   Propaganistas\LaravelPhone\PhoneServiceProvider::class,

],

در مسیر languages, برای هر زبان یک خط کد اضافی برای اعتبارسنجی اون وارد کنید :

'phone' => 'The :attribute field contains an invalid number.',

برای استفاده پکیج در Lumen کافیه سرویس رو در bootstrap/app.php اضافه کنید :

$app->register(Propaganistas\LaravelPhone\PhoneServiceProvider::class);

اعتبارسنجی

برای اعتبارسنجی شماره تلفن, از کلیدواژه phone در قوانین اعتبارسنجی خودتون استفاده کنید یا اینکه از کلاس قانون Phone برای تعریف قانون در روش expressive استفاده کنید. اعتبارسنج phone میتواند در سه روش عمل کند :

  • میتونید از کد کشورها ISO 3166-1 بعنوان پارامتر اعتبارسنج استفاده کنید, برای مثال :
'phonefield'       => 'phone:US,BE',
// 'phonefield'    => Rule::phone()->country(['US', 'BE'])

اعتبارسنج چک میکنه که آیا شماره در یکی از کشورهای موجود معتبر هست یا خیر, پس هر چندتا کشور که خواستید میتونید اضافه کنید.

  • شما یک فیلد ورودی کشور اختصاصی فراهم میکنید (براساس همان کد کشورها) تا خود کاربر اختیار داشته باشه که کشور مورد نظرش رو انتخاب کنه. ساده ترین راه نصب پکیج Laravel-Intl هست. مطمئن بشید که فیلد کشور همنام فیلد تلفن هست اما یک عبارت country_ به نامش اضافه شده باشه که بصورت خودکار شناسایی بشه, یا اینکه نام سفارشی فیلد کشور رو بعنوان پارامتر در اعتبارسنج وارد کنید :
'phonefield'            => 'phone',
// 'phonefield'         => Rule::phone()
'phonefield_country'    => 'required_with:phonefield',

'phonefield'            => 'phone:custom_country_field',
// 'phonefield'         => Rule::phone()->countryField('custom_country_field')
'custom_country_field'  => 'required_with:phonefield',

اگر از Laravel-Intl استفاده می کنید, شما میتونید از کد زیر برای پوشش لیست انتخابی کشورها استفاده کنید. این بصورت خودکار نام کشورها رو با توجه به منطقه بومی اپلیکیشن شما ترجمه میکنه :

Country::all()
  • با استفاده از کلیدواژه AUTO میتونید به اعتبارسنج بیاموزید که شناسایی کنه کدوم شماره متعلق به کدوم کشور هست :
'phonefield'       => 'phone:AUTO,US',
// 'phonefield'    => Rule::phone()->detect()->country('US')

برای محدود کردن نوع شماره ها, کافیه نوع های پذیرفته شده رو آخر پارامترها قرار بدید :

'phonefield'       => 'phone:US,BE,mobile',
// 'phonefield'    => Rule::phone()->country(['US', 'BE'])->type('mobile')
// 'phonefield'    => Rule::phone()->country('US', 'BE')->mobile()

انواع معمول mobile و fixed_line هستند اما میتونید از هرکدوم از این ها استفاده کنید.

همچنین میتونید نوع های سفارشی مثل شماره ثابت بدون کد محل رو هم با استفاده از پارامتر LENIENT ایجاد کنید. این مورد به خوبی با تشخیص خودکار کشور و شماره تلفن کار نمیکنه پس باید تغییراتتون رو اعمال کنید.

'phonefield'       => 'phone:LENIENT,US',
// 'phonefield'    => Rule::phone()->lenient()->country('US')

کلاس PhoneNumber

یک شماره تلفن میتونه در کلاس Propaganistas\LaravelPhone\PhoneNumber گسترش پیدا کنه تا با استفاده از متدهای سودمند بهتر بشه. شما میتونید بصورت مستقیم در view ها یا هنگام ذخیره سازی در دیتابیس آبجکت ها رو ارجاع بدید.

use Propaganistas\LaravelPhone\PhoneNumber;
(string) PhoneNumber::make('+3212/34.56.78');              // +3212345678
(string) PhoneNumber::make('012 34 56 78', 'BE');          // +3212345678
(string) PhoneNumber::make('012345678')->ofCountry('BE');  // +3212345678

فرمت دهی

یک PhoneNumber میتونه از طرق مختلف فرمت داده بشه :

PhoneNumber::make('012 34 56 78', 'BE')->format($format);       // See libphonenumber\PhoneNumberFormat
PhoneNumber::make('012 34 56 78', 'BE')->formatE164();          // +3212345678
PhoneNumber::make('012 34 56 78', 'BE')->formatInternational(); // +32 12 34 56 78
PhoneNumber::make('012 34 56 78', 'BE')->formatRFC3966();       // +32-12-34-56-78
PhoneNumber::make('012/34.56.78', 'BE')->formatNational();      // 012 34 56 78

// Formats so the number can be called straight from the provided country.
PhoneNumber::make('012 34 56 78', 'BE')->formatForCountry('BE'); // 012 34 56 78
PhoneNumber::make('012 34 56 78', 'BE')->formatForCountry('NL'); // 00 32 12 34 56 78
PhoneNumber::make('012 34 56 78', 'BE')->formatForCountry('US'); // 011 32 12 34 56 78

// Formats so the number can be clicked on and called straight from the provided country using a cellphone.
PhoneNumber::make('012 34 56 78', 'BE')->formatForMobileDialingInCountry('BE'); // 012345678
PhoneNumber::make('012 34 56 78', 'BE')->formatForMobileDialingInCountry('NL'); // +3212345678
PhoneNumber::make('012 34 56 78', 'BE')->formatForMobileDialingInCountry('US'); // +3212345678

اطلاعات شماره

اطلاعاتی در مورد شماره تلفن بدست بیارید :

PhoneNumber::make('012 34 56 78', 'BE')->getType();              // 'fixed_line'
PhoneNumber::make('012 34 56 78', 'BE')->isOfType('fixed_line'); // true
PhoneNumber::make('012 34 56 78', 'BE')->getCountry();           // 'BE'
PhoneNumber::make('012 34 56 78', 'BE')->isOfCountry('BE');      // true
PhoneNumber::make('+32 12 34 56 78')->isOfCountry('BE');         // true

تابع کمکی

پکیج شامل کمکی ()phone هست که یک نمونه از Propaganistas\LaravelPhone\PhoneNumber برمیگردونه یا اگر format$ موجود باشه string برمیگردونه :

phone($number, $country = [], $format = null)

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

مقالات برگزیده

مقالات برگزیده را از این قسمت میتوانید ببینید

مشاهده همه مقالات