美文网首页
fastadmin语言包使用笔记!

fastadmin语言包使用笔记!

作者: DragonersLi | 来源:发表于2022-07-28 12:05 被阅读0次

    使用fastadmin后台一键生成CRUD和菜单。admin模块接口和后台返回数据表字段类型为enum都会加上额外的field_text注释,例如:
    数据表字段status:0=正常,1=禁用、接口会多返回一个字段"status_text": "正常"admin模块下zh-cn目录下生成和控制器名一致的article文件。而api模块用的lang下没有该文件,复制一份过去显示没问题,维护成本增加。

    ├─application         应用目录
    │  ├─admin            admin模块配置文件目录
    │  │  ├─zh-cn.php     admin模块语言配置文件
    │  │  └─zh-cn         admin模块语言配置文件夹
    │  │  │  └─article.php  文章语言配置文件
    ...
    │  ├─api             api模块配置文件目录
    │  │  ├─zh-cn.php     api模块语言配置文件
    │  │  └─zh-cn        api模块语言配置文件夹
    

    admin/lang/zh-cn/article.php语言包

    <?php
    
    return [
        'Id'         => 'ID',
        'Title'      => '标题',
        'Intro'      => '简介',
        'Content'    => '内容',
        'Image'      => '封面图',
        'Type'       => '类型',
        'Type 0'     => '类型0',
        'Type 1'     => '类型1',
        'Type 2'     => '类型2',
        'Type 3'     => '类型3',
        'Hits'       => '点击次数',
        'Weigh'      => '权重',
        'Status'     => '状态',
        'Status 0'   => '正常',
        'Status 1'   => '禁用',
        'Createtime' => '创建时间',
        'Updatetime' => '更新时间',
        'Deletetime' => '删除时间'
    ];
    

    解决思路:
    api模块中引用admin模块的lang,在api/lang/zh-cn.php顶部加入如下代码,虽然可以解决
    但是这么多文件加起来也很麻烦。

    use think\Lang;
    //Lang::load(APP_PATH."admin/lang/zh-cn/*.php");//不支持通配符
    Lang::load(APP_PATH."admin/lang/zh-cn/article.php");//加载资讯语言包
    

    common/controller/Api.php控制器基类中,把loadlang方法中的模块改成admin,这样就不用每个都加了,自动根据当前控制器加载对应语言包。

         $this->loadlang($controllername);// 加载当前控制器语言包
    
    
        /**
         * 加载语言文件
         * @param string $name
         */
        protected function loadlang($name)
        {
            $name = Loader::parseName($name);
            $name = preg_match("/^([a-zA-Z0-9_\.\/]+)\$/i", $name) ? $name : 'index';
            $lang = $this->request->langset();
            $lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
            $module = 'admin';//$this->request->module();
            Lang::load(APP_PATH . $module . '/lang/' . $lang . '/' . str_replace('.', '/', $name) . '.php');
        }
    
    
    

    相关文章

      网友评论

          本文标题:fastadmin语言包使用笔记!

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