woodsandwalker/laravel-countries

Laravel Countries 是一个为 Laravel 提供所有国家的 ISO 3166_2 代码、国家模型、类型转换和验证规则的扩展包。

1.4.0 2024-05-20 08:36 UTC

This package is auto-updated.

Last update: 2024-09-20 09:32:07 UTC


README

Packagist Downloads Packagist Version

Laravel Countries 是一个为 Laravel 提供所有国家的 ISO 3166_2 代码、国家模型、类型转换和验证规则的扩展包。

入门指南

安装

composer require woodsandwalker/laravel-countries

配置

配置最少,无需配置即可使用该包。唯一的配置选项是排除国家数组。这通过在 Country 模型上应用全局范围来实现。

要发布配置,您可以运行以下命令

php artisan vendor:publish --tag=countries-config

要排除一个国家,只需将其 ISO 代码添加到排除数组中

[
    'exclude' => ['GB']
]

模型

该包包含一个 calebporzio/sushi 模型,其中包含每个国家的 iso_codename。使用此类模型还意味着无需数据库迁移。

此模型可以像任何其他 Laravel 模型一样使用。

$countryName = \WW\Countries\Models\Country::whereIsoCode('GB')->first()->name; // United Kingdom

验证规则

该包包含一个验证规则,用于验证 ISO 代码。

$data = $request->validate([
    'country' => ['required', new \WW\Countries\Rules\Country]
]);

您可以使用 validation.country 键在您的语言文件中覆盖默认验证错误消息。

模型属性转换

该包包含一个模型属性转换。转换期望 ISO 代码作为原始属性。

您可以使用以下迁移向用户表添加国家列。

Schema::table('users', function (Blueprint  $table) {
    $table->char('country', 2);
});

然后将转换添加到用户模型

class User extends Model
{
    /**
     * The attributes that should be cast.
     * 
     * @var array
     */
    protected $casts = [
        'country' => \WW\Countries\Casts\Country::class,
    ];
}

为用户存储国家

$user = User::find(1);

$user->country = 'GB';
$user->save();

现在您可以在用户模型的国家属性上访问 ISO 代码和名称

$user = User::find(1);

$countryIsoCode = $user->country->iso_code; // GB
$countryName = $user->country->name; // United Kingdom

本地化

当访问国家名称时,模型将查找 countries.{ISO_CODE} 的翻译字符串,例如 countries.GB。如果找不到此翻译字符串,它将回退到 en 区域。

安装新区域

该包包含一个命令,可以从 umpirsky/country-list 安装新的国家区域。您可以在此处查看所有可用的区域。此命令将在 lang/{locale}/countries.php 中创建一个新文件。此命令使用 file_get_contents 函数,需要在您的 PHP 配置中开启 allow_url_fopen

要安装新区域,例如西班牙语(es),请运行以下命令

php artisan countries:install-translation es

许可证

Laravel Countries 在 MIT 许可证下发布。有关详细信息,请参阅附带 LICENSE.md 文件。