sidm / laravel-subdivisions
Laravel Subdivisions 是为 Laravel 4.2 定制的包,提供所有 ISO 3166_2 下辖区域(即州、省等)的所有国家的信息。基于 Webpatser 在其 laravel-countries 包中所做的出色工作。
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-28 16:59:50 UTC
README
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
并添加 provider
和 filter
'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') }}