tapfury/laravel-phone

为Laravel和Lumen添加基于Google的libphonenumber API的验证器。

3.0.1 2017-07-19 16:49 UTC

README

Build Status Scrutinizer Code Quality Code Coverage Latest Stable Version Total Downloads License

基于giggsey的PHP端口libphonenumber-for-php和Google的libphonenumber APIlibphonenumber API,为Laravel 4 & 5和Lumen添加电话验证器和格式化器。

安装

运行以下命令安装最新版本的包

composer require propaganistas/laravel-phone

Laravel

在您的应用程序配置中,将服务提供者添加到$providers数组中(仅限Laravel 5.4或以下版本)

'providers' => [
   ...
   Propaganistas\LaravelPhone\LaravelPhoneServiceProvider::class,
],

在您的语言目录中,为每种语言添加一个额外的语言行以供验证器使用

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

Lumen

bootstrap/app.php中注册服务提供者

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

验证器

要使用电话验证器验证字段,请在验证规则数组中使用phone关键字。电话验证器可以以三种方式运行。

  • 您可以直接指定符合ISO 3166-1 alpha-2标准的国家代码作为验证器的参数,例如

    'phonefield'  => 'phone:US,BE',

    验证器将检查该号码是否在提供的至少一个国家中有效,因此您可以随意添加尽可能多的国家代码。

  • 您没有指定任何参数,但通过插入一个专用的国家输入字段(以ISO 3166-1 alpha-2标准的国家代码键入)来允许最终用户自行提供国家。最简单的方法是安装Laravel-Intl包。确保国家字段的名称与电话字段类似,但以_country结尾以自动发现,或向验证器提供您自定义的国家字段名称作为参数

    'phonefield'            => 'phone',
    'phonefield_country'    => 'required_with:phonefield',
    'phonefield'            => 'phone:custom_country_field',
    'custom_country_field'  => 'required_with:phonefield',

    如果使用Laravel-Intl,则可以使用以下代码片段填充国家选择列表。它将根据您的应用程序区域自动显示翻译后的国家名称

    Country::all()
  • 您指示验证器使用AUTO关键字(以及可选的任何后备国家)来检测号码所属的国家

    'phonefield'  => 'phone:AUTO,US',

    验证器将尝试从号码本身中提取国家,然后检查该号码是否对该国家有效。如果无法猜测国家,则将使用提供(如果有)的后备国家进行验证。请注意,只有当电话号码以国际格式(以加号+开头,例如+32 ...) 输入时,国家猜测才会起作用。前导双零将不会被正确解析,因为这不是已建立的规则。

要指定数字类型约束,只需将允许的类型追加到参数末尾,例如

'phonefield'  => 'phone:US,BE,mobile',

最常见的类型是mobilefixed_line,但您可以使用定义在这里的任何类型这里

您还可以通过使用LENIENT参数启用更宽松的验证(例如,不带区号的固定电话)。请注意,此功能与国家自动检测和数字类型验证不兼容,因此请自行承担风险。

'phonefield'  => 'phone:LENIENT,US',

格式化器

使用phone()辅助函数格式电话号码。$country_code是电话号码所属的国家。

phone($phone_number, $country_code = null, $format = PhoneNumberFormat::INTERNATIONAL)

始终尝试提供$country_code,以确保正确识别电话号码。如果没有提供$country_code,则将使用当前应用程序的区域设置作为合理的默认值。$format参数定义输出格式,是可选的。默认格式为国际格式,但可以是libphonenumber\PhoneNumberFormat中的任何常量。