美文网首页
laravel-admin 省市区三级联动的爬坑问题

laravel-admin 省市区三级联动的爬坑问题

作者: 中v中 | 来源:发表于2019-12-31 15:46 被阅读0次

    官网:https://github.com/laravel-admin-extensions/china-distpicker
    //如果要使用省市区名字,记住把china-distpicker/china_area.sql文件下载然后导入到你自己的数据库

    安装
    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, city, district, 在form表单中使用它:
    默认存入数据库的是省市区的行政代码,而不是省市区的名字,Distpicker所使用的地域编码是基于国家统计局发布的数据, 数据字典为china_area.sql文件.

     $form->distpicker([
                'province' => '省',
                'city'     => '市',
                'district' => '区'
            ]);
    

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

    相关文章

      网友评论

          本文标题:laravel-admin 省市区三级联动的爬坑问题

          本文链接:https://www.haomeiwen.com/subject/uzoboctx.html