【Fastadmin】根據Fieldlist鍵值組件做一個等級配置的完整示例

目錄

1.效果展示:

?編輯

2.建表:

3.html頁面

4.controller控制器

5.js

6.model


1.效果展示:


2.建表:


表名:fa_xxfb_config

/*Navicat Premium Data TransferSource Server         : rootSource Server Type    : MySQLSource Server Version : 50726Source Host           : localhost:3306Source Schema         : xxxTarget Server Type    : MySQLTarget Server Version : 50726File Encoding         : 65001Date: 11/12/2023 17:50:00
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for fa_xxfb_config
-- ----------------------------
DROP TABLE IF EXISTS `fa_xxfb_config`;
CREATE TABLE `fa_xxfb_config`  (`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '配置項名稱',`value` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '配置項值',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `name`(`name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

3.html頁面


<style>.upload-image {background: url('__CDN__/assets/img/plus.png') no-repeat center center;background-size: 30px 30px;height: 30px;width: 30px;border: 1px solid #ccc;}
</style>
<div class="row"><div class="col-md-6"><div class="box box-info"><!--<div class="panel-heading">等級配置</div>--><div class="panel-body"><div class="alert alert-success-light"><b>溫馨提示</b><br>這里是等級的配置<br>
<!--                    <b>下面的演示textarea為了便于調試,設置為可見的,實際使用中應該添加個hidden的class進行隱藏</b>--></div><form id="second-form" role="form" data-toggle="validator" method="POST" action=""><div class="form-group row"><label class="control-label col-xs-12">等級配置:</label><div class="col-xs-12"><table class="table fieldlist" data-template="gradetpl" data-name="row[grade]" id="first-table"><tr><td>{:__('名稱')}</td><td>{:__('累計收益')}</td><td>{:__('押金')}</td><td>{:__('圖標')}</td>
<!--                                    <td>{:__('狀態')}</td>--><td width="100"></td></tr><tr><td colspan="5"><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></td></tr></table><!--請注意實際開發中textarea應該添加個hidden進行隱藏--><textarea name="row[grade]" class="form-control hidden" cols="30" rows="5">{$grade.value}</textarea><script id="gradetpl" type="text/html"><tr class="form-inline"><td><input type="text" name="<%=name%>[<%=index%>][name]" class="form-control" size="15" value="<%=row.name%>" placeholder="名稱"/></td><td><input type="text" onkeyup="value=value.replace(/[^\d]/g,'')" name="<%=name%>[<%=index%>][income]" class="form-control" size="15" value="<%=row.income%>" placeholder="累計收益"/></td><td><input type="text" onkeyup="value=value.replace(/[^\d]/g,'')" name="<%=name%>[<%=index%>][deposit]" class="form-control" size="15" value="<%=row.deposit%>" placeholder="押金"/></td><td><input type="hidden" name="<%=name%>[<%=index%>][image]" id="c-image-<%=index%>" value="<%=row.image%>"><!--@formatter:off--><button type="button" id="faupload-image" class="btn btn-danger faupload upload-image" data-input-id="c-image-<%=index%>" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" <%if(row.image){%>style="background-image: url('<%=Fast.api.cdnurl(row.image)%>')"<%}%>></button><!--@formatter:on--></td><!--<td><input type="hidden" name="<%=name%>[<%=index%>][state]" id="c-state-<%=index%>" class="form-control" style="width:50px" value="<%=row.state%>" placeholder="狀態"/><a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-state-<%=index%>" data-yes="1" data-no="0" ><i class="fa fa-toggle-on text-success <%if(row.state==0){%>fa-flip-horizontal text-gray<%}%> fa-2x"></i></a></td>--><td><!--下面的兩個按鈕務必保留--><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></td></tr></script></div></div><div class="alert alert-danger-light"><b>什么是賬號等級?</b><br></div><div class="form-group row"><div class="col-xs-12"><table class="table fieldlist" data-template="grade_explaintpl" data-name="row[grade_explain]" id="second-table"><tr><td>{:__('賬號等級說明')}:</td></tr></table><!--請注意實際開發中textarea應該添加個hidden進行隱藏--><textarea name="row[grade_explain]" class="form-control editor" cols="30" rows="5">{$grade_explain.value}</textarea></div><div class="form-group row"><label class="control-label col-xs-12"></label><div class="col-xs-12"><button type="submit" class="btn btn-success btn-embossed">{:__('OK')}</button><button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button></div></div></form></div></div></div></div>

plus圖標:

4.controller控制器


<?phpnamespace app\admin\controller\xxfb;use app\common\controller\Backend;
use app\common\model\xxfb\Config;/*** 自定義表單示例** @icon   fa fa-table* @remark FastAdmin支持在控制器間跳轉,點擊后將切換到另外一個TAB中,無需刷新當前頁面*/
class Grade extends Backend
{public $grade = '';public $grade_explain = '';public function _initialize(){$this->grade = Config::where('name', 'grade')->find();$this->assign('grade', $this->grade);$this->grade_explain = Config::where('name', 'grade_explain')->find();$this->assign('grade_explain', $this->grade_explain);parent::_initialize();}public function index(){if ($this->request->isPost()) {$data = $this->request->post("row/a");if($data['grade']){if($this->grade){$this->grade->value = $data['grade'];$this->grade->save();}else{$arr = ['name' => 'grade', 'value' => $data['grade']];Config::create($arr);}}if($data['grade_explain']){if($this->grade_explain){$this->grade_explain->value = $data['grade_explain'];$this->grade_explain->save();}else{$arr = ['name' => 'grade_explain', 'value' => $data['grade_explain']];Config::create($arr);}}$this->success("提交成功");}return $this->view->fetch();}}

5.js


define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {var Controller = {index: function () {Template.helper("Fast", Fast);$(document).on("fa.event.appendfieldlist", "#first-table .btn-append", function (e, obj) {//綁定上傳組件Form.events.faupload(obj);//上傳成功回調事件,變更按鈕的背景$(".upload-image", obj).data("upload-success", function (data) {$(this).css("background-image", "url('" + Fast.api.cdnurl(data.url) + "')");})});Form.api.bindevent($("form[role=form]"), function (data, ret) {// Layer.alert(data.data);});},};return Controller;
});

6.model


<?phpnamespace app\common\model\xxfb;use think\Model;/*** 配置*/
class Config Extends Model
{protected $table = 'fa_xxfb_config';}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215237.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215237.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215237.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入Docker命令行:探索常用命令和實用技巧

Docker命令行界面是每個容器開發者的得力工具。在這篇文章中&#xff0c;將深入探討一系列常用的Docker命令&#xff0c;以及一些實用技巧&#xff0c;通過更豐富的示例代碼&#xff0c;幫助大家更全面地理解和運用Docker命令行工具。 1. Docker基本命令 1.1 鏡像操作 深入了…

用 CSS 寫一個漸變色邊框的輸入框

Using_CSS_gradients MDN 多漸變色輸入框&#xff0c;群友問了下&#xff0c;就試著寫了下&#xff0c;看了看 css 漸變色 MDN 文檔&#xff0c;其實很簡單&#xff0c;代碼記錄下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta ch…

使用FFMPEG轉碼,轉單聲道,轉標準WAV,轉PCM

本文為使用FFMPEG命令行的方式處理音頻&#xff0c;來獲取想要得到的音頻文件。 零、使用命令行查看編碼封裝信息 格式&#xff1a;ffprobe.exe -show_format inputfile 例子&#xff1a;ffprobe.exe -show_format .\stereo_44_16bit.wav 運行結果為下圖&#xff1a; 如圖可…

C# Channel實現線程間通信

C# Channel實現線程間通信 同步方式實現&#xff1a; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Channels; using System.Threading.T…

【JavaFX】實現計算器小程序

下面是一個簡單的JavaFX計算器示例: import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.…

西南科技大學數字電子技術實驗四(基本觸發器邏輯功能測試及FPGA的實現)預習報告

一、計算/設計過程 說明:本實驗是驗證性實驗,計算預測驗證結果。是設計性實驗一定要從系統指標計算出元件參數過程,越詳細越好。用公式輸入法完成相關公式內容,不得貼手寫圖片。(注意:從抽象公式直接得出結果,不得分,頁數可根據內容調整) (1)D觸發器 特征方程: Q…

往adobe illustrator中添加latex字體

找到如下字體所在路徑 /path/to/miktex/type1\public\amsfonts\cm然后copy相應的字體文件 cmmi10.pfb將相應的pfb文件復制到Adobe illustrator字體文件夾: /path/to/illustrator/Support Files/Required/Fonts然后重啟即可。

ChatGPT/GPT4應用:文本、論文、編程、繪圖等,提高工作效率及科研項目開發能力

2023年隨著OpenAI開發者大會的召開&#xff0c;最重磅更新當屬GPTs&#xff0c;多模態API&#xff0c;未來自定義專屬的GPT。微軟創始人比爾蓋茨稱ChatGPT的出現有著重大歷史意義&#xff0c;不亞于互聯網和個人電腦的問世。360創始人周鴻祎認為未來各行各業如果不能搭上這班車…

排序-選擇排序與堆排序

文章目錄 一、選擇排序二、堆排序三、時間復雜度四、穩定性 一、選擇排序 思想&#xff1a; 將數組第一個元素作為min&#xff0c;然后進行遍歷與其他元素對比&#xff0c;找到比min小的數就進行交換&#xff0c;直到最后一個元素就停止&#xff0c;然后再將第二個元素min&…

【單調棧】【二分查找】LeetCode: 2454.下一個更大元素 IV

作者推薦 【動態規劃】【廣度優先】LeetCode2258:逃離火災 本文涉及的基礎知識點 二分查找算法合集 單調棧 題目 給你一個下標從 0 開始的非負整數數組 nums 。對于 nums 中每一個整數&#xff0c;你必須找到對應元素的 第二大 整數。 如果 nums[j] 滿足以下條件&#xff…

音視頻技術開發周刊 | 323

每周一期&#xff0c;縱覽音視頻技術領域的干貨。 新聞投稿&#xff1a;contributelivevideostack.com。 Meta牽頭組建開源「AI復仇者聯盟」&#xff0c;AMD等盟友800億美元力戰OpenAI英偉達 超過50家科技大廠名校和機構&#xff0c;共同成立了全新的人工智能聯盟。以開源為旗號…

RocketMQ的架構是什么樣的?

RocketMQ&#xff0c;作為一款強大的分布式消息中間件&#xff0c;廣泛應用于各種大規模分布式系統中&#xff0c;為異步消息通信提供了可靠的解決方案。本文將深入探討RocketMQ的核心組件&#xff0c;包括Producer、Broker、Consumer和NameServer&#xff0c;以及它們在整個架…

高中物理電學總結之穩恒電流篇

高中物理電學總結之穩恒電流篇 電流電流的定義對電流的微觀分析 電阻歐姆定律電阻的串并聯電阻定律 電源的電動勢電源電動勢 閉合電路歐姆定律閉合電路閉合電路歐姆定律 電流做功與焦耳定律電流做功電功率焦耳定律電源效率 電表改裝 電流 電流的定義 電解質溶液中的自由電荷是…

ACwing算法備戰藍橋杯——Day30——樹狀數組

定義&#xff1a; 樹狀數組是一種數據結構&#xff0c;能將對一個區間內數據進行修改和求前綴和的這兩種操作的最壞時間復雜度降低到O(logn); 實現所需變量 變量名變量數據類型作用數組a[]int存儲一段區間數組tr[]int表示樹狀數組 主要操作 函數名函數參數組要作用lowbit()int…

Linux-RedHat系統-安裝 中間件 Tuxedo

安裝步聚 一、中間件安裝包&#xff1a; tuxedo121300_64_Linux_01_x86 Tuxedo下載地址&#xff1a; Oracle Tuxedo Downloads 二、新建用戶&#xff1a; &#xff08;創建Oracle用戶時&#xff0c;需要root權限操作&#xff09; 創建用戶&#xff1a; # useradd oracle …

es6從url中獲取想要的參數

第一種方法 很古老&#xff0c;通過 split 方法慢慢截取&#xff0c;可行是可行但是這個方法有一個弊端&#xff0c;因為 split 是分割成數組了&#xff0c;只能按照下標的位置獲取值&#xff0c;所以就是參數位置一旦發生變化&#xff0c;那么獲取到的值也就錯位了 let user…

利用python將data:image/jpg; base64,格式數據轉化下載為圖片

在做爬蟲爬取圖片時&#xff0c;發現有的圖片url是用“data:image/jpg;base64” 開頭的&#xff0c;例如下圖 部分開頭樣式如下&#xff1a; 1、data:image/jpg; base64, 2、data:image/png; base64, 3、data:image/webp;base64, 利用python進行代碼進行圖片下載&#xff0c;…

面向對象設計與分析40講(22)罪惡的單例模式?

單例模式曾經被認為是一種重要的設計模式&#xff0c;但現在已經失去了很多開發者的青睞。雖然單例模式可能仍然適用于某些場景&#xff0c;但它的使用已經不再像過去那樣普遍了。 單例模式是創建型設計模式的一種&#xff0c;它限制了一個類的實例化只能為一個實例&#xff0…

先進的Web3.0實戰熱門領域NFT項目幾個總結分享

非同質化代幣&#xff08;NFT&#xff09;的崛起為游戲開發者提供了全新的機會&#xff0c;將游戲內物品和資產轉化為真正的可擁有和交易的數字資產。本文將介紹幾個基于最先進的Web3.0技術實踐的NFT游戲項目&#xff0c;并分享一些相關代碼。 Axie Infinity&#xff08;亞龍無…

智能優化算法應用:基于貓群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于貓群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于貓群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.貓群算法4.實驗參數設定5.算法結果6.參考文獻7.MA…