Distpicker是一箇中國省市區三級聯動選擇組件,這個包是基於Distpicker的laravel-admin擴展,用來將Distpicker集成進laravel-admin的表單中php
安裝laravel
composer require laravel-admin-ext/china-distpicker
而後git
php artisan vendor:publish --tag=laravel-admin-china-distpicker
配置
在config/admin.php文件的extensions配置部分,加上屬於這個擴展的配置github
'extensions' => [ 'china-distpicker' => [ // 若是要關掉這個擴展,設置爲false 'enable' => true, ] ]
使用
表單中使用
好比在表中有三個字段province_id, city_id, district_id, 在form表單中使用它:sql
$form->distpicker(['province_id', 'city_id', 'district_id']);
設置默認值數據庫
$form->distpicker([ 'province_id' => '省份', 'city_id' => '市', 'district_id' => '區' ], '地域選擇')->default([ 'province' => 130000, 'city' => 130200, 'district' => 130203, ]);
能夠設置每一個字段的placeholdercomposer
$form->distpicker([ 'province_id' => '省', 'city_id' => '市', 'district_id' => '區' ]);
參考網站:https://github.com/laravel-admin-extensions/china-distpicker網站
默認存入數據庫的是省市區的行政代碼,而不是省市區的名字,Distpicker所使用的地域編碼是基於國家統計局發佈的數據, 數據字典爲china_area.sql文件.ui
Grid 列表展現須要轉換爲省市區名字,代碼以下:編碼
//省名 $grid->column('province', __('Province')) ->display(function($code) { $name = DB::table('china_area')->where('code', $code)->value('name'); return $name; }); //市名 $grid->column('city', __('City')) ->display(function($code) { $name = DB::table('china_area')->where('code', $code)->value('name'); return $name; }); //區名 $grid->column('district', __('District')) ->display(function($code) { $name = DB::table('china_area')->where('code', $code)->value('name'); return $name; });
Detail 詳情展現,代碼以下:
$show->field('province', __('Province')) ->unescape()->as(function ($code) { $name = DB::table('china_area')->where('code', $code)->value('name'); return $name; }); $show->field('city', __('City')) ->unescape()->as(function ($code) { $name = DB::table('china_area')->where('code', $code)->value('name'); return $name; }); $show->field('district', __('District')) ->unescape()->as(function ($code) { $name = DB::table('china_area')->where('code', $code)->value('name'); return $name; });