yieldstudio/nova-phone-field

基于用户插入的国家代码具有动态格式的 Nova 手机号码字段。

2.0.0 2023-07-19 21:30 UTC

This package is auto-updated.

Last update: 2024-09-20 00:18:19 UTC


README

Latest Version Total Downloads

基于用户插入的国家代码具有动态格式的 Nova 手机号码字段。

bissolli/nova-phone-field分支以维护包。

screenshot of the phone field

要求

  • PHP 8.0+
  • Laravel Nova 4.0+
  • Laravel 框架 8.0+

注意:对于 Laravel 版本 < 8.0 或 Nova < 4,请使用 bissolli/nova-phone-field

安装

您可以通过 composer 将此包安装到使用 Nova 的 Laravel 应用中。

composer require yieldstudio/nova-phone-field

用法

直接访问您的 Nova 资源并使用 YieldStudio\NovaPhoneField\PhoneNumber 字段。

namespace App\Nova;

use YieldStudio\NovaPhoneField\PhoneNumber;

class Member extends Resource
{
    // ...
    
    public function fields(Request $request)
    {
        return [
            // ...
            
            PhoneNumber::make('Phone Number'),

            // ...
        ];
    }
}

现在您可以在 Nova 应用中的博客文章屏幕上查看和添加标签。所有标签都将保存在 tags 表中。

过滤

默认情况下,将加载并启用 yieldstudio/nova-phone-field/resources/js/data/phone-masks.json 中可用的所有国家掩码。但是,您可以通过调用 onlyCountries() 方法来选择所需的国家。

PhoneNumber::make('Phone Number')
    ->onlyCountries('BR', 'US', 'IE'),

自定义号码格式

您还可以使用 withCustomFormats() 添加自定义电话格式。

PhoneNumber::make('Phone Number')
    ->withCustomFormats('+123 ## #.#', '+123 ## ####.####'),

或者,在调用 withCustomFormats() 时仅使用您自己的电话格式,并在其中使用 onlyCustomFormats()

PhoneNumber::make('Phone Number')
    ->withCustomFormats('+123 ## #.#', '+123 ## ####.####')
    ->onlyCustomFormats(),

从 1.0.x 迁移

在 2.0 中,值现在以 E.164 格式 存储了。之前,格式化后的值被存储,这后来导致了使用上的问题。

使用 E.164 格式,您可以直接使用电话号码。我们在资源的索引和详情中使用了 libphonenumber-js 来对其进行格式化。

要替换之前保存的值,您可以使用此查询

UPDATE _table_ SET _field_=CONCAT('+', REGEXP_REPLACE(_field_, '\\D', ''))

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全性

如果您发现了关于安全性的错误,请通过电子邮件发送到 contact@yieldstudio.fr,而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。