laraveladmin省市區三級聯動


Distpicker是一個中國省市區三級聯動選擇組件,這個包是基於Distpicker的laravel-admin擴展,用來將Distpicker集成進laravel-admin的表單中

安裝

composer require laravel-admin-ext/china-distpicker

 

然后

php artisan vendor:publish --tag=laravel-admin-china-distpicker

 

配置
在config/admin.php文件的extensions配置部分,加上屬於這個擴展的配置

'extensions' => [

  'china-distpicker' => [

  // 如果要關掉這個擴展,設置為false
  'enable' => true,
  ]
]

 

使用
表單中使用
比如在表中有三個字段province_id, city_id, district_id, 在form表單中使用它:

$form->distpicker(['province_id', 'city_id', 'district_id']);

 


設置默認值

$form->distpicker([
'province_id' => '省份',
'city_id' => '',
'district_id' => ''
], '地域選擇')->default([
'province' => 130000,
'city' => 130200,
'district' => 130203,
]);

 


可以設置每個字段的placeholder

$form->distpicker([
'province_id' => '',
'city_id' => '',
'district_id' => ''
]);

 



參考網站:https://github.com/laravel-admin-extensions/china-distpicker

 

默認存入數據庫的是省市區的行政代碼,而不是省市區的名字,Distpicker所使用的地域編碼是基於國家統計局發布的數據, 數據字典為china_area.sql文件.

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;
        });

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM