sidm/laravel-subdivisions

Laravel Subdivisions 是为 Laravel 4.2 定制的包,提供所有 ISO 3166_2 下辖区域(即州、省等)的所有国家的信息。基于 Webpatser 在其 laravel-countries 包中所做的出色工作。

v1.0.2 2015-07-01 21:27 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:59:50 UTC


README

Total Downloads Latest Stable Version Latest Unstable Version License

Laravel Subdivisions 是为 Laravel 4.2 定制的包,提供所有 ISO 3166_2 下辖区域(即州、省等)的所有国家的信息。基于 Webpatser 在其 laravel-countries 包中所做的出色工作。

安装

sidm/laravel-subdivisions 添加到 composer.json

"sidm/laravel-subdivisions": "dev-master"

运行 composer update 以获取最新的 Subdivision List 版本。

编辑 app/config/app.php 并添加 providerfilter

'providers' => array(
    'sidm\Subdivisions\SubdivisionsServiceProvider',
)

现在添加别名。

'aliases' => array(
    'Subdivisions' => 'sidm\Subdivisions\SubdivisionsFacade',
)

配置

首先发布配置。第一个变量是表名,如果默认名称 subdivisions 可以接受,则无需修改。

接下来的两个变量非常重要

'country_table_name' => 'countries',
'iso_3166_2_column_name' => 'iso_3166_2',

如果您只想使用下辖区而没有国家表,则这两个值应更改为 null(即 '')。如果您使用 Webpatser/laravel-countries 包,默认值应该可以正常工作。如果您使用其他包或自己编写,则 country_table_name 应设置为包含您国家列表的表名,而 iso_3166_2_column_name 应设置为包含每个国家的 iso_3166_2 值的列名。

当您已修改配置文件(src/config/config.php)后,运行以下命令

$ php artisan config:publish sidm/laravel-subdivisions

模型

接下来生成迁移文件

$ php artisan subdivisions:migration

它将生成 <timestamp>_setup_subdivisions_table.php 迁移和 SubdivisionsSeeder.php 种子器。为确保数据被种植,请在 seeds/DatabaseSeeder.php 中插入以下代码

//Seed the subdivisions
$this->call('SubdivisionsSeeder');
$this->command->info('Seeded the subdivisions!'); 

现在可以通过 artisan migrate 命令运行它

$ php artisan migrate --seed

运行此命令后,填充的下辖区表将可用

示例

如果您使用 Webpatser/laravel-countries 包来在表单中使用此包,您可以在任何控制器中放置以下内容

$countries = Countries::lists('name', 'id');
$states = Subdivisions::where('country_id', '=', 840)->lists('region', 'id');
return View::make('yourview.create', compact('countries', 'states'));

然后在表单中使用国家,您可以这样做

{{ Form::label('country', 'Country') }}<br>
// 840 will default to the United States
{{ Form::select('country', $countries, '840') }}

最后,对于州,您可以这样做

{{ Form::label('state', 'State/Province/Region') }}<br>
// 4133 will default to Alabama
{{ Form::select('state', $states, '4133') }}