با استفاده از پکیج 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)
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید