天天看點

fastadmin采坑總結大全(持續更新)

目錄

    • 一、fastadmin背景使用七牛雲插件,上傳圖檔旁的選擇按鈕無法上傳圖檔以及儲存圖檔
    • 二、使用fastadmin随機生成的入口檔案報模闆不存在
    • 三、實作前台菜單欄綠标選中
    • 四、給selectpage預設選中值
    • 五、給selectpage添加查詢條件
    • 六、解決前台引入表格後出現破版問題
    • 七、去掉表格中預設的搜尋樣式
    • 八、控制器方法中傳值到js
    • 九、在原有鍵值裡對在增加
    • 十、使用 fastadmin的小程式支付
    • 十一、小程式登陸
    • 十二、自定義按鈕并傳值
    • 十三、在添加按鈕上進行傳值
    • 十四、fastadmin上傳視訊至七牛雲
    • 十五、fastadmin背景能通路,前台路徑錯誤 ,前台路徑錯誤,背景又能通路。

一、fastadmin背景使用七牛雲插件,上傳圖檔旁的選擇按鈕無法上傳圖檔以及儲存圖檔

問題描述:
fastadmin采坑總結大全(持續更新)

上傳好的圖檔,無法顯示在清單裡:

fastadmin采坑總結大全(持續更新)
解決方案:

此問題由于使用七牛雲上傳插件所導緻,啟用服務端回調,修改回調位址即可

fastadmin采坑總結大全(持續更新)

二、使用fastadmin随機生成的入口檔案報模闆不存在

問題描述:

本地項目配置虛拟域名後通路背景沒問題,放到線上後報入口檔案的模闆不存在。一開始以為Nginx配置錯了,怎麼調都無法調出

fastadmin采坑總結大全(持續更新)
解決方案:

一、修改自動生成的檔案:

pCPyfJaEDR.php

,修改為:

admin.php

二、修改

config.php

fastadmin采坑總結大全(持續更新)

去掉admin即可!

三、實作前台菜單欄綠标選中

fastadmin采坑總結大全(持續更新)
fastadmin采坑總結大全(持續更新)

打開:

sidenav.html

控制器名為

my_baby_day

,方法名為

ceshi

四、給selectpage預設選中值

方案一:

效果展示:

fastadmin采坑總結大全(持續更新)
fastadmin采坑總結大全(持續更新)
<div class="form-group row">
        <label class="control-label col-xs-12 col-sm-2">{:__('添加體溫')}:</label>
        <div class="col-xs-12 col-sm-8">
            <dl class="fieldlist" data-template="eventtpl1" data-name="row[temperature]">
                <dd>
                    <ins>{:__('度數')}</ins>
                    <ins>{:__('時間段')}</ins>
                    <ins>{:__('狀态')}</ins>
                </dd>
                {foreach $teamp_info as $k=>$v}
                <dd class="form-inline">
                    <ins><input type="text" data-rule="required" name="row[temperatures][{$k}][degree]" class="form-control" value="{$v.degree}" placeholder="度數"/></ins>
                        <ins><input type="text" data-rule="required" name="row[temperatures][{$k}][noon]" class="form-control selectpage" data-source="my_noon/index" data-field="noon" value="{$v.noon}" placeholder="時間段"/></ins>
                    <ins><input type="text" data-rule="required" name="row[temperatures][{$k}][status]" class="form-control selectpage" data-params='{"custom[fid]":1}' data-source="My_all_type/index" data-field="type_name" value="{$v.status}" placeholder="狀态" size="10"/></ins>
                    <!--下面的兩個按鈕務必保留-->
                    <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span>
                    <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span>
                </dd>
                {/foreach}
                <dd><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></dd>
            </dl>
        </div>
    </div>
           

方案二:

修改底層(不建議)

連結: fastadmin問答解決selectpage預設選中問題.

五、給selectpage添加查詢條件

方案一:

增加

data-params='{"custom[fid]":1}'

屬性。

其中,找到

selectpage

方法:

fastadmin采坑總結大全(持續更新)
fastadmin采坑總結大全(持續更新)

selectpage

方法中接受自定義查詢條件,接受方式為數組,是以,隻需在html頁面定義自定義查詢條件就可。

data-params='{"custom[fid]":1}'

的意思就是:where(‘fid’,1)。

方案二:

連結: fastadmin問答給selectpage添加自定義查詢條件.

六、解決前台引入表格後出現破版問題

破版展示:

fastadmin采坑總結大全(持續更新)
fastadmin采坑總結大全(持續更新)

解決方案

fastadmin采坑總結大全(持續更新)

找到

meta.html

,加入樣式:

<style>
    .toolbar,.search,.columns-right{
        margin-top: 10px!important;
    }
</style>
           

最終效果

fastadmin采坑總結大全(持續更新)

七、去掉表格中預設的搜尋樣式

fastadmin采坑總結大全(持續更新)

在相應的js檔案中增加:

search:false,
showColumns:false,
showToggle:false,
showExport:false,
commonSearch:false,
           
fastadmin采坑總結大全(持續更新)

八、控制器方法中傳值到js

控制器裡:

$this->assignconfig("ids",$ids);

js裡:

add_url: 'my_ratio/add?ids='+Config.ids,

九、在原有鍵值裡對在增加

fastadmin采坑總結大全(持續更新)
<div class="form-group row">
            <label class="control-label col-xs-12 col-sm-2">添加睡眠資訊:</label>
            <div class="col-xs-12 col-sm-8">
                <dl class="fieldlist" data-template="eventtpl4" data-name="row[sleep]">
                    <dd>
                        <ins>睡眠時間</ins>
                        <ins>備注</ins>
                        <ins>時長(分鐘)</ins>
                        <ins>狀态</ins>
                    </dd>
                    <dd><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> 追加</a></dd>
                </dl>
                <script id="eventtpl4" type="text/html">
                    <dd class="form-inline">
                        <ins><input type="text" data-rule="required" name="<%=name%>[<%=index%>][sleep_time]" class="form-control" value="<%=row.sleep_time%>" placeholder="睡眠時間"/></ins>
                        <ins><input type="text" data-rule="required" name="<%=name%>[<%=index%>][remarks]" class="form-control" value="<%=row.remarks%>" placeholder="備注"/></ins>
                        <ins><input type="text" data-rule="required" name="<%=name%>[<%=index%>][duration]" class="form-control" value="<%=row.duration%>" placeholder="時長" size="10"/></ins>
                        <ins><input type="text" data-rule="required" name="<%=name%>[<%=index%>][status]" class="form-control selectpage" data-params='{"custom[fid]":4}' data-source="My_all_type/index" data-field="type_name" value="<%=row.status%>" placeholder="狀态" size="10"/></ins>
                        <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span>
                        <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span>
                    </dd>
                </script>
            </div>
        </div>

           

十、使用 fastadmin的小程式支付

fastadmin采坑總結大全(持續更新)

以上三項分别為:

  • minapp_id:小程式APPID,從小程式平台擷取。
  • mch_id:微信商戶id
  • key:微信商戶key

控制器中:

/**
     * 購買試題
     */
    public function payQuestion(){
        try{
            $money = trim($this->request->request("money"));
            $qid = $this->request->request("qid");
            if (empty($money)||empty($qid)){
                $this->error("缺少必要參數");
            }
            // if ($money<1){
            //     $this->error("支付金額不正确");
            // }
            //判斷是否有該試題
            $res = Db::name("questions")
                ->where("id",$qid)
                ->find();
            if (empty($res)){
                $this->error("不存在該試題");
            }
            //判斷試題金額是否與傳過來的金額一緻
            if ($res['money']!=$money){
                $this->error("試題金額錯誤");
            }
            //擷取目前使用者的openid
            $openid = Db::name("user")
                ->where("id",$this->auth->id)
                ->value("username");
            if ($openid==""){
                $this->error("不存在此賬戶");
            }
            $pay = new \addons\epay\controller\Index();
            $data = $pay->experience($openid,$qid,$money,"wechat","miniapp");
            $this->success($data ? "ok" : '暫無資料',$data,$data?1:2);
        }catch (Exception $e) {
            $this->error($e->getMessage());
        }
    }
           

addon插件下的index控制器:

/**
     * 體驗,僅供開發測試
     */
    public function experience($openid,$qid,$amount,$type,$method)
    {
        if (!$amount || $amount < 0) {
            $this->error("支付金額必須大于0");
        }

        if (!$type || !in_array($type, ['alipay', 'wechat'])) {
            $this->error("支付類型不能為空");
        }

        //訂單号
        $out_trade_no = date("YmdHis") . mt_rand(100000, 999999);

        //訂單标題
        $title = '購買試題';

        $data['uid'] = $this->auth->id;
        $data['out_trade_no'] = $out_trade_no;
        $data['add_time'] = time();
        $data['qid'] = $qid;
        $data['money'] = $amount;
        Db::name("paylog")->insert($data);
        //回調連結
        $notifyurl = $this->request->root(true) . '/addons/epay/index/notifyx/paytype/' . $type;
        $returnurl = $this->request->root(true) . '/addons/epay/index/returnx/paytype/' . $type . '/out_trade_no/' . $out_trade_no;

        return Service::submitOrder($openid,$amount, $out_trade_no, $type, $title, $notifyurl, $returnurl, $method);
    }
           

需要openid參數,從小程式授權後擷取。

十一、小程式登陸

流程:首先,前端拉起授權,獲得到code以後,請求後端接口,後端請求得到appid和unionid,對此進行操作和處理,最終傳回給前端一個token即可(看個人需求)。

/**
     * 小程式登陸
     */
    public function minappLogin(){
        $appid = '微信小程式appid';//微信小程式appid
        $secret = '微信小程式secret';//微信小程式secret
        $code = input('code');//接收code參數,換取使用者唯一辨別
        $username = input('username');//接收使用者名
        $headimgurl = input('headimgurl');//接收使用者頭像
        //下面url是請求微信端位址擷取使用者唯一辨別的,對應的appid和secret改成自己的
        $url="https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$secret."&js_code=".$code."&grant_type=authorization_code";
        $res = $this->http_curl($url);//https_request是封裝的發送請求的方法
        if (isset($res['errcode'])){
            $this->error("請求微信接口失敗");
        }
        //判斷是否存在該openid
        $is_exit = Db::name("user")
            ->where("username",$res["openid"])
            ->find();
        if ($is_exit){
            //直接登陸
            $param["account"] = $res["openid"];
            $param["password"] = "123456";
            $url = "http://xxxxxx.com/api/User/login";
            $data = json_decode($this->post($url,$param),true);
            $token = $data['data']['userinfo']['token'];
            $this->success($data?"ok":"請求資料為空",$data,$data?1:2);
        }else{
            //注冊并登陸
            $param['username'] = $res["openid"];
            $param['password'] = "123456";
            $param["nickname"] = $username;
            $param["avatar"] = $headimgurl;
            $url = "http://xxxxxx.com/api/User/register";
            $data = json_decode($this->post($url,$param),true);
            if ($data["code"]==1){
                $param["account"] = $res["openid"];
                $param["password"] = "123456";
                $urls = "http://xxxxxx.com/api/User/login";
                $data = json_decode($this->post($urls,$param),true);
                $this->success($data?"ok":"請求資料為空",$data,$data?1:2);
            }else{
                $this->error("注冊失敗");
            }
        }
           

十二、自定義按鈕并傳值

如果要控制按鈕是否顯示,在visible屬性值中,通過

row.字段名

進行判斷即可。

// 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    [
                        {checkbox: true},
                        {field: 'id', title: __('Id')},
                        {field: 'custname', title: __('Custname')},
                        {field: 'petname', title: __('Petname')},
                        {field: 'blance', title: __('Blance'), operate:'BETWEEN'},
                        {field: 'creattime', title: __('Creattime')},
                        {field: 'updatetime', title: __('Updatetime')},
                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,buttons: [
                               {
                                    name: 'zidingyi',
                                    text: __('充值扣費記錄'),
                                    title: __('充值扣費記錄'),
                                    classname: 'btn btn-xs btn-primary btn-dialog',
                                    url: 'operation/index?id={id}',
                                    visible: function (row) {
										console.log(row) 
										//可列印出所有字段的數組。
                                        //傳回true時按鈕顯示,傳回false隐藏
                                        return true;
                                    }
                                },
                            ]
                        }
                    ]
                ]
            });
           

其中

id

為上方

field

字段中的id名稱。

fastadmin采坑總結大全(持續更新)

十三、在添加按鈕上進行傳值

fastadmin采坑總結大全(持續更新)

在控制器中的index方法中将uid映射過去:

/**
     * 檢視
     */
    public function index()
    {
        //目前是否為關聯查詢
        $this->relationSearch = true;
        //設定過濾方法
        $this->request->filter(['strip_tags']);
        if ($this->request->isAjax())
        {
            $uid = $this->request->request('uid');
            //如果發送的來源是Selectpage,則轉發到Selectpage
            if ($this->request->request('keyField'))
            {
                return $this->selectpage();
            }
            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
            $total = $this->model
                    ->with(['user'])
                    ->where($where)
                    ->order($sort, $order)
                    ->count();

            $list = $this->model
                    ->with(['user'])
                    ->where($where)
                    ->order($sort, $order)
                    ->limit($offset, $limit)
                    ->select();

            foreach ($list as $row) {
                $row->visible(['id','balance_log','type','balance','add_time','year','month','uid']);
                $row->visible(['user']);
				$row->getRelation('user')->visible(['mobile']);
            }
            $arr = [];
            $list = collection($list)->toArray();
            if ($list){
                foreach ($list as $k=>$v){
                    if ($v['uid']==$uid){
                        $arr[] = $v;
                    }
                }
            }
            $result = array("total" => count($arr), "rows" => $arr);

            return json($result);
        }
        $uid = $this->request->request('uid');
        $this->assign("uid",$uid);		//将uid映射過去
        return $this->view->fetch();
    }
           

首頁中在添加按鈕的連結中将uid傳過去:

<div class="panel panel-default panel-intro">
    {:build_heading()}

    <div class="panel-body">
        <div id="myTabContent" class="tab-content">
            <div class="tab-pane fade active in" id="one">
                <div class="widget-body no-padding">
                    <div id="toolbar" class="toolbar">
                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
                        <a href="{:url('fundlog/add')}?uid={$uid}" class="btn btn-success btn-add {:$auth->check('fundlog/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('fundlog/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
                        <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('fundlog/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('fundlog/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>

                        <div class="dropdown btn-group {:$auth->check('fundlog/multi')?'':'hide'}">
                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                            <ul class="dropdown-menu text-left" role="menu">
                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
                            </ul>
                        </div>

                        
                    </div>
                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
                           data-operate-edit="{:$auth->check('fundlog/edit')}" 
                           data-operate-del="{:$auth->check('fundlog/del')}" 
                           width="100%">
                    </table>
                </div>
            </div>

        </div>
    </div>
</div>

           

十四、fastadmin上傳視訊至七牛雲

一、安裝七牛雲插件

fastadmin采坑總結大全(持續更新)

配置參數:

fastadmin采坑總結大全(持續更新)
安裝好後,清下緩存。

二、增加上傳視訊的檔案格式(例如:mp4)

找到

application\extra\upload.php

檔案,增加mp4格式:

fastadmin采坑總結大全(持續更新)

修改視圖中的

add.html

,增加上傳類型mp4:

fastadmin采坑總結大全(持續更新)

三、上傳以及展示效果

fastadmin采坑總結大全(持續更新)
fastadmin采坑總結大全(持續更新)
fastadmin采坑總結大全(持續更新)
fastadmin采坑總結大全(持續更新)
fastadmin采坑總結大全(持續更新)

十五、fastadmin背景能通路,前台路徑錯誤 ,前台路徑錯誤,背景又能通路。

錯誤場景:一般建立一個站點後,把fastadmin項目扔進去後并要配置一個虛拟目錄的配置。

一般都是加上這句:

if (!-e $request_filename) {
	rewrite  ^(.*)$  /index.php?s=$1  last;
	break;
}
           

這句話在之前的fastadmin版本是可以用的,等後來更新為admin.php為随機名稱後,這句不好使了就,加上這句能通路背景,但是前台不能通路了,不加這句能通路前台,但是背景不能通路了。

之前的錯誤寫法:

server
{
    listen 80;
    server_name dingdongbackend.wangchuangcode.cn;
    root /www/wwwroot/dingdongbackend.wangchuangcode.cn/public;
    
    if (!-e $request_filename) {
		rewrite  ^(.*)$  /index.php?s=$1  last;
		break;
	}
	location / {
	    index  index.html index.htm index.php;
	    #主要是這一段一定要确儲存在
	}
    access_log  /www/wwwlogs/dingdongbackend.wangchuangcode.cn.log;
    error_log  /www/wwwlogs/dingdongbackend.wangchuangcode.cn.error.log;
}
           

正确的寫法:

server
{
    listen 80;
    server_name dingdongbackend.wangchuangcode.cn;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/dingdongbackend.wangchuangcode.cn/public;
	location / {
	    index  index.html index.htm index.php;
	    #主要是這一段一定要确儲存在
	    if (!-e $request_filename) {
	        rewrite  ^(.*)$  /index.php?s=/$1  last;
	        break;
	    }
	}
    access_log  /www/wwwlogs/dingdongbackend.wangchuangcode.cn.log;
    error_log  /www/wwwlogs/dingdongbackend.wangchuangcode.cn.error.log;
}
           

總結:

if (!-e $request_filename) {
   rewrite  ^(.*)$  /index.php?s=/$1  last;
    break;
}
           

放到

location / {

}
           

中即可。