4、小程序进阶使用

4.1 编写数据接口页

CMS插件已包含了基本的小程序数据接口,控制器放在 /addons/cms/controller/wxapp 目录下,您可以根据需要自行添加新的控制器(数据接口)。

例如,我们在ColorUI模版添加一个 home/home.vue 页面,希望将一些区块数据调取出来,这时,我们只需要复制现有的Index.php控制器,重命名为Home.php(注意首字母大写),然后编辑这个文件

<?php....../**
 * 首页
 */class Home extends Base // 将Index改为Home 注意首字母大写 
{
    ......    /**
     * 将来的接口就是
     * https://host/addons/cms/wxapp.home/index 这里的home默认可以是小写
     */
    public function index()    {        $indexfocusList = [];        // 获取indexfocus区块数据,限制3条,asc排序
        $list = Block::getBlockList(['name' => 'indexfocus', 'row' => 3, 'orderway' => 'asc']); 
        // 遍历$list数组,取值拼接新的数组
        foreach ($list as $index => $item) { 
            $indexfocusList[] = ['image' => cdnurl($item['image'], true), 'url' => $item['url'], 'title' => $item['title'], 'content' => $item['content']];
        }        $archivesList = [];        // 获取channel_id为['2','3','4','5','6']的内容列表
        $list = Archives::where('status', 'normal')
            ->where('channel_id', 'in', ['2','3','4','5','6'])
            ->order('weigh desc,id desc')
            ->cache(false)
            ->select();        // 遍历$list数组,取值拼接新的数组
        foreach ($list as $index => $item) {            $archivesList[] = ['id' => $item['id'], 
                'channel_id' => $item['channel_id'], 
                'model_id' => $item['model_id'], 
                'title' => $item['title'], 
                'diyname' => $item['diyname'], 
                'description' => $item['description'], 
                'image' => $item['image'], 
                'tags' => $item['tags'], 
                'views' => $item['views'], 
                'likes' => $item['likes'], 
                'comments' => $item['comments'], 
                'url' => $item['url']
            ];
        }        // 组合数据并返回
        $data = [            'indexfocusList' => $indexfocusList,            'archivesList' => $archivesList,
        ];        $this->success('', $data);
    }
}// 注意没有php结束标签复制

4.2 封装请求

在工程根目录添加以下两个文件,其中https.js为通用请求模块,api.js为接口地址,后面将挂到Vue上,便于随时调用。

/utils/https.js 通用请求

module.exports = (param) =>{    let url = param.url;    let method = param.method;    let header = param.header || {};    let data = param.data || {};    
    if(method){
        method = method.toUpperCase();        if(method == "POST"){
            header = {"Content-Type": "application/x-www-form-urlencoded"}
        }
    }    
    if(!param.hideLoading){
        uni.showLoading({            title:"加载中..."
        })
    }
    
    uni.request({        url: url,        method: method || "GET",        header: header,        data: data,        success: res => {            if(res.statusCode && res.statusCode != 200){
                uni.showModal({                    content: res.msg
                });                return;
            }            typeof param.success == "function" && param.success(res.data);
        },        fail: (e) => {
            uni.showModal({                content: e.msg
            });            typeof param.fail == "function" && param.fail(e.data);
        },        complete: () => {            console.log("request complete.")
            uni.hideLoading();            typeof param.complete == "function" && param.complete();            return;
        }
    })
}复制

/utils/api.js 接口地址

const host = "https://host/"const apiPath = "addons/cms/wxapp."const api = {    getHomeData: host + apiPath + 'home/index',    getCasesData: host + apiPath + 'cases/index'}module.exports = api;复制

4.3 编写对应页面

<template name="home">
    <scroll-view scroll-y class="page">
        <swiper class="screen-swiper" :class="dotStyle?'square-dot':'round-dot'" :indicator-dots="true" :circular="true"
         :autoplay="true" interval="5000" duration="500">
            <swiper-item v-for="(item,index) in indexfocusList" :key="index">
                <image :src="item.image" mode="aspectFill"></image>
                <view class="swiper-item-box">
                    <text class="item-title text-bold">{{item.title}}</text>
                    <text class="item-content">{{item.content}}</text>
                </view>
            </swiper-item>
        </swiper>
        ......        <view class="cu-tabbar-height"></view>
    </scroll-view></template><script>......</script><style>......</style>复制

4.4 数据请求

4.4.1 挂载请求模块和接口地址

在 import App from './App' 下方添加下面的代码

import https from './utils/https.js'Vue.prototype.request = httpsimport api from './utils/api.js'Vue.prototype.api = api复制

添加之后的结构大概如下:

import Vue from 'vue'import App from './App'import https from './utils/https.js'Vue.prototype.request = httpsimport api from './utils/api.js'Vue.prototype.api = api
......const app = new Vue({
    ...App})
app.$mount()复制

4.4.2 数据请求

GetHomeData() {    this.request({        url: this.api.getHomeData,        success: res => {            console.log(res);
        }
    });
}

点赞(1) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

触发修改文章时间【fastadmincms开发记录】|fastadmincms二次开发,触发,修改,文章,时间,fastadmin,ms,开发,记录
触发修改文章时间【fastadmincms开发记录】
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】|fastadmincms二次开发,在tp5中,过滤,输入,的零,宽度,字符,fastadmin,ms,开发,记录
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】
处理tag标签中的0宽空格【fastadmincms开发记录】|fastadmincms二次开发,处理,tag,标签,中的,0宽,空格,fastadmin,ms,开发,记录
处理tag标签中的0宽空格【fastadmincms开发记录】
添加专题时tags标签id出错【fastadmincms开发记录】|fastadmincms二次开发,添加,专题,时tags,标签,id,出错,fastadmin,ms,开发,记录
添加专题时tags标签id出错【fastadmincms开发记录】
20230518----模板 广告【fastadmincms开发记录】|fastadmincms二次开发,20230518,模板,广告,fastadmin,ms,开发,记录
20230518----模板 广告【fastadmincms开发记录】
cms添加视频模型【fastadmincms开发记录】|fastadmincms二次开发,ms,添加,视频,模型,fastadmin,开发,记录
cms添加视频模型【fastadmincms开发记录】
新增单篇收费复制功能【fastadmincms开发记录】|fastadmincms二次开发,新增,单篇,收费,复制,功能,fastadmin,ms,开发,记录
新增单篇收费复制功能【fastadmincms开发记录】
添加开会员折扣功能【fastadmincms开发记录】|fastadmincms二次开发,添加,开会,折扣,功能,fastadmin,ms,开发,记录
添加开会员折扣功能【fastadmincms开发记录】

历史上的今天:04月30日

热门专题

云南网站建设|云南网站制作,网站建设,云南网站开发,云南网站设计,云南网页设计,云南网站建设公司,云南网站建设
云南网站建设
云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
安徽中源管业有限公司|安徽中源管业有限公司,安徽中源管业有限公司介绍,安徽中源管业有限公司电话,安徽中源管业有限公司地址,安徽中源管业有限公司厂家,安徽中源管业有限公司电力管,安徽中源管业有限公司管材
安徽中源管业有限公司
昆明网站建设|昆明网站建设,昆明网站开发,昆明网站建设公司,昆明网站建设价格,昆明网站设计,昆明网站制作,网页设计,高端网站建设,高端网站设计
昆明网站建设
中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业
大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
卓越综合高中|卓越综合高中
卓越综合高中

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部