分类 运维 下的文章

二十七 第二个模块
暂定为txt图书阅读
下载图书文件txt全集

二十八 获取txt文件名称
批处理文件为:
@echo off
for /f "delims=" %%i in ('dir /s/a-d /b *.txt') do echo %%~ni>>JustName.txt
start JustName.txt

pause

二十九 上传至fastadmin的public目录
txt文件上传至fastadmin对应目录
静态文件在fastadmin的根目录下的public文件里
新建file/medic_book文件夹
访问路径为
https://admin.huchangyi.com/file/medic_book/030-本草纲目别名录.txt

三十 微信小程序新建跳转页面
新建列表页面和文档展示页面
微信小游戏原生的跳转
wx.redirectTo
关闭当前页面,跳转到应用内的某个页面,但是不允许跳转到tabBar页面。
两个页面之间平级的跳转,不存在父子的关系。跳到第二个页面时,右上角没有返回按钮。
页面调走后会调用onUnload方法,第一个页面被关闭和卸载。

wx.navigateTo
保留当前页面,跳转到应用内的某个页面,但是不能跳到tabBar页面。
使用wx.navigateBack可以返回到原页面。
小程序页面栈最多十层。
两个页面之间的跳转是父页面跳子页面,跳到第二个页面时,左上角有返回按钮。
页面调走后会调用onHide方法,第一个页面并没有被关闭,只是被隐藏起来了。

wx.switchTab
跳转到tabBar页面,并关闭其他页面。

wx.reLaunch
关闭所有页面,打开到应用内的某个页面,左上角没有返回按钮。

三十一 父页面的跳转和传参

<view bindtap="goUrl" class="weui-cells__title">{{book1}}</view>

goUrl: function(e) {
    //console.log(e.currentTarget.dataset.book1);
    //var t = "/pages/medic_book/read";
    var book_name = this.data.book1;
    //跳转非tab页
    wx.navigateTo({
        url: '/pages/medic_book/read',
        events: {
          // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
          acceptDataFromOpenedPage: function(data) {
            //console.log(data)
          },
          someEvent: function(data) {
            //console.log(data)
          }
        },
        success: function(res) {
          // 通过 eventChannel 向被打开页面传送数据
          res.eventChannel.emit('acceptDataFromOpenerPage', { data: book_name })
        }
      });
},

三十二 子页面的获取参数

onLoad: function(option){
    console.log(option.query)
    const eventChannel = this.getOpenerEventChannel()
    eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
    eventChannel.emit('someEvent', {data: 'test'});
    // 监听 acceptDataFromOpenerPage 事件,获取上一页面通过 eventChannel 传送到当前页面的数据
    eventChannel.on('acceptDataFromOpenerPage', function(data) {
      console.log(data)
    })
  },

三十三 解决问题eventChannel.on()内无法调用自己的方法或者this.SetData()
这是this指向不对的问题。
三个方法。
第一 let that = this 写在你的这个on监听之外。
第二个 写成箭头函数eventChannel.on(‘questions’, (data) => {console.log(this.)})
第三个 看下是否可以 bind(this)
改变this指针,有三种方法

二十三 关闭应用调试
打开 application/config.php 配置文件
'app_debug' => Env::get('app.debug', false),

二十四 编辑微信接口

 /**
 * 中药一览
 * @ApiTitle    (中药一览)
 * @ApiMethod   (POST)
 */
public function medic_list()
{
    $name = $this->request->post("name");
    //$request = Config::get('upload');//static固定方法
    //$medic = new Medic();//非固定方法需先实例化对象
    //$request = $medic->index('name',$name);
    $data = Db::table('medic')->where('name', $name)->find();//单条指定数据
    $this->success('success', $data);
}

二十五 测试接口
php think api --force=true
https://访问域名/api.html
https://admin.huchangyi.com/api/api_wechat/medic_list

二十六 小程序中调用接口wx.request
self = this;

    wx.request({
        url: 'https://admin.huchangyi.com/api/api_wechat/medic_list', 
        method: 'POST',
        data: {
            'name': name,
        },
        header: {
          'content-type': 'application/json' // 默认值
        },
        success (res) {
          //console.log(res.data),
          json = res.data.data,
          json = JSON.stringify(json),
          json = JSON.parse(json),
          console.log(json);
          if(json!=null){
            self.setData({
                inputValue: e.detail.value,
                name:json['name'],
                class:json['class'],
                alias:json['alias'],
                form:json['form'],
                habitat:json['habitat'],
                mining:json['mining'],
                chemical:json['chemical'],
                taste:json['taste'],
                effect:json['effect'],
                apply:json['apply'],
                mix:json['mix'],
                pinyin:json['pinyin'],
                phr:json['phr'],
              });
          }
          else{
            self.setData({
                inputValue: e.detail.value,
                name:'无匹配中药名称,请重新输入',
                class:'',
                alias:'',
                form:'',
                habitat:'',
                mining:'',
                chemical:'',
                taste:'',
                effect:'',
                apply:'',
                mix:'',
                pinyin:'',
                phr:'',
              });
          }
        },
        fail (errMsg) {
            console.log(errMsg.data)
          }
      });

十三 json与字符串互相转换
name: '麻黄',
class: '发散风寒药',
alias: '麻黄、龙沙、卑相、卑盐、狗骨、草麻黄、色道麻、洁力根、麻黄、生麻黄、去节麻黄、蜜炙麻黄、炙麻黄、麻黄绒、草麻黄、华麻黄。',
form: '草本状小灌木,高20~40cm。木质茎短,常匍匐;草质茎绿色,长圆柱形。直立,节明显,节间长2~6cm,直径约2mm,有不明显的细纵槽纹。鳞叶膜质鞘状,长3~4mm,下部约1/2合和生,上部2(3)裂,裂片三角状披针形,先端渐尖,常向外反曲。雌雄异株,雄球花3~5聚成复穗状,顶生;雌球花宽卵形,多单生枝端,雌球花成熟时苞片增大,肉质,红色,成浆果状。种子2,卵形。花期5~6月。种子成熟期7~8月。',
habitat: '生于河床、河滩、干草原、固定砂丘。主产河北、山西、新疆、内蒙古。',
mining: '秋季采割绿色的草质茎,晒干。 ',
chemical: '含1-麻黄碱(I-ephedrine)、d-伪麻黄碱(d-pseu-doephedrine)、I-N-甲基麻黄碱、d-N-甲基伪麻黄碱、1-去甲麻黄碱(I-norephedrine)、d-去甲伪麻黄碱,并含麻黄恶嗪(2,3,5,6-tetramethylpyrazine)、苄甲胺等 ',
taste: '辛微苦温,归肺膀胱经.',
effect: '发汗解表,宣肺平喘,利水消肿.',
apply: '1,风寒感冒.2,咳嗽气喘.3,风水水肿.4,有散寒通滞作用,用于风寒痹证,阴疽,痰核. ',
mix: '辛微苦温,归肺膀胱经. 发汗解表,宣肺平喘,利水消肿. 1,风寒感冒.2,咳嗽气喘.3,风水水肿.4,有散寒通滞作用,用于风寒痹证,阴疽,痰核. ',
pinyin: 'MH',
phr: '内服:煎汤(宜先煎,去水面浮沫),0.5-2钱;或入丸、散。',

十四 json转换相关方法
str转json 一般用于前端处理后端数据
var json = JSON.parse(this.data.str);

json转str 一般用于后端request接口数据
JSON.stringify(json)

十五 data中数据的获取与设置
获取
var text=this.data.text
设置
this.setData({

     text:data value
  })  

十六 str转json报错处理 Unexpected token n in JSON at position 1
需注意双引号,正确的格式为
str:'{"name": "麻黄","class": "发散风寒药","alias": "麻黄、龙沙、卑相、卑盐、狗骨、草麻黄、色道麻、洁力根、麻黄、生麻黄、去节麻黄、蜜炙麻黄、炙麻黄、麻黄绒、草麻黄、华麻黄。","form": "草本状小灌木,高20~40cm。木质茎短,常匍匐;草质茎绿色,长圆柱形。直立,节明显,节间长2~6cm,直径约2mm,有不明显的细纵槽纹。鳞叶膜质鞘状,长3~4mm,下部约1/2合和生,上部2(3)裂,裂片三角状披针形,先端渐尖,常向外反曲。雌雄异株,雄球花3~5聚成复穗状,顶生;雌球花宽卵形,多单生枝端,雌球花成熟时苞片增大,肉质,红色,成浆果状。种子2,卵形。花期5~6月。种子成熟期7~8月。","habitat": "生于河床、河滩、干草原、固定砂丘。主产河北、山西、新疆、内蒙古。","mining": "秋季采割绿色的草质茎,晒干。","chemical": "含1-麻黄碱(I-ephedrine)、d-伪麻黄碱(d-pseu-doephedrine)、I-N-甲基麻黄碱、d-N-甲基伪麻黄碱、1-去甲麻黄碱(I-norephedrine)、d-去甲伪麻黄碱,并含麻黄恶嗪(2,3,5,6-tetramethylpyrazine)、苄甲胺等","taste": "辛微苦温,归肺膀胱经.","effect": "发汗解表,宣肺平喘,利水消肿.","apply": "1,风寒感冒.2,咳嗽气喘.3,风水水肿.4,有散寒通滞作用,用于风寒痹证,阴疽,痰核.","mix": "辛微苦温,归肺膀胱经. 发汗解表,宣肺平喘,利水消肿. 1,风寒感冒.2,咳嗽气喘.3,风水水肿.4,有散寒通滞作用,用于风寒痹证,阴疽,痰核. ","pinyin": "MH","phr": "内服:煎汤(宜先煎,去水面浮沫),0.5-2钱;或入丸、散。"}',

十七 后端代码由github切换到gitee
查看如今的远程源
git remote -v

删除远程仓库源
git remote rm origin

注册登录gitee
https://gitee.com/

从github导入仓库
https://gitee.com/projects/import/url

添加码云仓库
git remote add origin git@gitee.com:hu_changyi/fastadmin.git
git remote -v

提交
git commit -m 'test'
git push

push失败,关联本地与远程的分支
git push --set-upstream origin main

push失败,上传公钥git@gitee.com: Permission denied (publickey).
cat ~/.ssh/id_rsa.pub
https://gitee.com/profile/sshkeys

查看本地分支
git branch
git branch -D main

git强制push
git clean -d -fx (删除未被添加到git的路径中的文件,慎用)
git push -f
git pull

十八 导入后台数据库

十九 fastadmin一键curl
生成medic 表的CRUD且一键生成菜单
php think crud -t medic -u 1
php think crud -t medic -u 1 --force=true

删除中药百科表生成的CRUD
php think crud -t 中药百科 -d 1
php think crud -t medicine -d 1

生成的文件有:
/home/www/admin/application/admin/controller/Medic.php
/home/www/admin/application/admin/model/Medic.php
/home/www/admin/application/admin/validate/Medic.php
/home/www/admin/application/admin/view/medic/add.html
/home/www/admin/application/admin/view/medic/edit.html
/home/www/admin/application/admin/view/medic/index.html
/home/www/admin/application/admin/view/medic/recyclebin.html
/home/www/admin/application/admin/lang/zh-cn/medic.php
/home/www/admin/public/assets/js/backend/medic.js

二十 一键生成api文档
php think api --force=true
https://访问域名/api.html

二十一 新建微信接口
新建/home/www/admin/application/api/controller/ApiWechat.php

二十二 控制器
FastAdmin中定义了三个基类控制器,分别位于
application/common/controller/Api.php //API接口基类控制器
application/common/controller/Backend.php //后台基类控制器
application/common/controller/Frontend.php //前台基类控制器

其中后台基类控制器文件路径为application/admin/library/traits/Backend.php