湖北哪里需要建网站,制作个网站需要多少钱,企业为何选择网站推广外包?,广东贸易网站建设哪家目录 1.效果展示#xff1a;
列表
添加及编辑页面同
2.建表#xff1a;
3.使用crud一键生成并创建控制器
4.html页面
add.html
edit.html
index.php
5.js页面
6.小知识点 1.效果展示#xff1a; 列表 添加及编辑页面同 2.建表#xff1a; 表名#xff1a;fa_x…目录 1.效果展示
列表
添加及编辑页面同
2.建表
3.使用crud一键生成并创建控制器
4.html页面
add.html
edit.html
index.php
5.js页面
6.小知识点 1.效果展示 列表 添加及编辑页面同 2.建表 表名fa_xxfb_banner
/*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: 08/12/2023 17:52:34
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS 0;-- ----------------------------
-- Table structure for fa_xxfb_banner
-- ----------------------------
DROP TABLE IF EXISTS fa_xxfb_banner;
CREATE TABLE fa_xxfb_banner (id int(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ID,title varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 换灯标题,image varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 换灯图片,site enum(1,2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 1 COMMENT 位置:1首页,2任务大厅,jump_type_list enum(0,1,2,3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 跳转方式:0不跳转,1内链,2外链,3自定义内容,content text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 自定义内容,switch tinyint(5) NULL DEFAULT 1 COMMENT 开关:0关,1开,weigh int(16) NULL DEFAULT NULL COMMENT 权重,createtime bigint(16) NULL DEFAULT NULL COMMENT 创建时间,jump_url varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 跳转链接,PRIMARY KEY (id) USING BTREE,INDEX site_switch(site, switch) USING BTREE
) ENGINE InnoDB AUTO_INCREMENT 6 CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 轮播图 ROW_FORMAT Dynamic;SET FOREIGN_KEY_CHECKS 1;3.使用crud一键生成并创建控制器 4.html页面 add.html
form idadd-form classform-horizontal roleform data-togglevalidator methodPOST actiondiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Site)}:/labeldiv classcol-xs-12 col-sm-8select idc-site data-rulerequired classform-control selectpicker namerow[site]{foreach namesiteList itemvo}option value{$key} {in namekey value1}selected{/in}{$vo}/option{/foreach}/select/div/divdiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Title)}:/labeldiv classcol-xs-12 col-sm-8input idc-title classform-control namerow[title] typetext data-rulerequired/div/divdiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Image)}:/labeldiv classcol-xs-12 col-sm-8div classinput-groupinput idc-image classform-control size50 namerow[image] typetext data-rulerequireddiv classinput-group-addon no-border no-paddingspanbutton typebutton idfaupload-image classbtn btn-danger faupload data-input-idc-image data-mimetypeimage/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp data-multiplefalse data-preview-idp-imagei classfa fa-upload/i {:__(Upload)}/button/spanspanbutton typebutton idfachoose-image classbtn btn-primary fachoose data-input-idc-image data-mimetypeimage/* data-multiplefalsei classfa fa-list/i {:__(Choose)}/button/span/divspan classmsg-box n-right forc-image/span/divul classrow list-inline faupload-preview idp-image/ul/div/divdiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Jump_type_list)}:/labeldiv classcol-xs-12 col-sm-8select idc-jump_type_list classform-control selectpicker namerow[jump_type_list]{foreach namejumpTypeListList itemvo}option value{$key} {in namekey value}selected{/in}{$vo}/option{/foreach}/select/div/divdiv classform-group idcontent_show_hidelabel classcontrol-label col-xs-12 col-sm-2{:__(Content)}:/labeldiv classcol-xs-12 col-sm-8textarea idc-content classform-control editor rows5 namerow[content] cols50 data-rule/textarea/div/divdiv classform-group idjump_url_show_hidelabel classcontrol-label col-xs-12 col-sm-2{:__(Jump_url)}:/labeldiv classcol-xs-12 col-sm-8input idc-jump_url classform-control namerow[jump_url] typetext data-rule/div/divdiv classform-group layer-footerlabel classcontrol-label col-xs-12 col-sm-2/labeldiv classcol-xs-12 col-sm-8button typesubmit classbtn btn-primary btn-embossed disabled{:__(OK)}/buttonbutton typereset classbtn btn-default btn-embossed{:__(Reset)}/button/div/div
/formedit.html
form idedit-form classform-horizontal roleform data-togglevalidator methodPOST actiondiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Site)}:/labeldiv classcol-xs-12 col-sm-8select idc-site data-rulerequired classform-control selectpicker namerow[site]{foreach namesiteList itemvo}option value{$key} {in namekey value$row.site}selected{/in}{$vo}/option{/foreach}/select/div/divdiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Title)}:/labeldiv classcol-xs-12 col-sm-8input idc-title classform-control namerow[title] typetext value{$row.title|htmlentities} data-rulerequired/div/divdiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Image)}:/labeldiv classcol-xs-12 col-sm-8div classinput-groupinput idc-image classform-control size50 namerow[image] typetext value{$row.image|htmlentities} data-rulerequireddiv classinput-group-addon no-border no-paddingspanbutton typebutton idfaupload-image classbtn btn-danger faupload data-input-idc-image data-mimetypeimage/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp data-multiplefalse data-preview-idp-imagei classfa fa-upload/i {:__(Upload)}/button/spanspanbutton typebutton idfachoose-image classbtn btn-primary fachoose data-input-idc-image data-mimetypeimage/* data-multiplefalsei classfa fa-list/i {:__(Choose)}/button/span/divspan classmsg-box n-right forc-image/span/divul classrow list-inline faupload-preview idp-image/ul/div/divdiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Jump_type_list)}:/labeldiv classcol-xs-12 col-sm-8select idc-jump_type_list classform-control selectpicker namerow[jump_type_list]{foreach namejumpTypeListList itemvo}option value{$key} {in namekey value$row.jump_type_list}selected{/in}{$vo}/option{/foreach}/select/div/divdiv classform-group idcontent_show_hidelabel classcontrol-label col-xs-12 col-sm-2{:__(Content)}:/labeldiv classcol-xs-12 col-sm-8textarea idc-content classform-control editor rows5 namerow[content] cols50{$row.content|htmlentities}/textarea/div/divdiv classform-group idjump_url_show_hidelabel classcontrol-label col-xs-12 col-sm-2{:__(Jump_url)}:/labeldiv classcol-xs-12 col-sm-8input idc-jump_url classform-control namerow[jump_url] typetext value{$row.jump_url|htmlentities}/div/divdiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Switch)}:/labeldiv classcol-xs-12 col-sm-8select idc-switch classform-control selectpicker namerow[switch]{foreach nameswitchList itemvo}option value{$key} {in namekey value$row.switch}selected{/in}{$vo}/option{/foreach}/select/div/divdiv classform-grouplabel classcontrol-label col-xs-12 col-sm-2{:__(Weigh)}:/labeldiv classcol-xs-12 col-sm-8input idc-weigh classform-control namerow[weigh] typenumber value{$row.weigh|htmlentities}/div/divdiv classform-group layer-footerlabel classcontrol-label col-xs-12 col-sm-2/labeldiv classcol-xs-12 col-sm-8button typesubmit classbtn btn-primary btn-embossed disabled{:__(OK)}/buttonbutton typereset classbtn btn-default btn-embossed{:__(Reset)}/button/div/div
/formindex.php
div classpanel panel-default panel-introdiv classpanel-heading{:build_heading(null,FALSE)}ul classnav nav-tabsli classactivea href#all data-toggletab{:__(All)}/a/li{foreach namesiteList itemvo}lia href#{$key} data-toggletab{$vo}/a/li{/foreach}/ul/divdiv classpanel-bodydiv idmyTabContent classtab-contentdiv classtab-pane fade active in idonediv classwidget-body no-paddingdiv idtoolbar classtoolbara hrefjavascript:; classbtn btn-primary btn-refresh title{:__(Refresh)} i classfa fa-refresh/i /aa hrefjavascript:; classbtn btn-success btn-add {:$auth-check(xxfb/banner/add)?:hide} title{:__(Add)} i classfa fa-plus/i {:__(Add)}/aa hrefjavascript:; classbtn btn-success btn-edit btn-disabled disabled {:$auth-check(xxfb/banner/edit)?:hide} title{:__(Edit)} i classfa fa-pencil/i {:__(Edit)}/aa hrefjavascript:; classbtn btn-danger btn-del btn-disabled disabled {:$auth-check(xxfb/banner/del)?:hide} title{:__(Delete)} i classfa fa-trash/i {:__(Delete)}/adiv classdropdown btn-group {:$auth-check(xxfb/banner/multi)?:hide}a classbtn btn-primary btn-more dropdown-toggle btn-disabled disabled data-toggledropdowni classfa fa-cog/i {:__(More)}/aul classdropdown-menu text-left rolemenulia classbtn btn-link btn-multi btn-disabled disabled hrefjavascript:; data-paramsswitch1i classfa fa-eye/i 开/a/lilia classbtn btn-link btn-multi btn-disabled disabled hrefjavascript:; data-paramsswitch0i classfa fa-eye-slash/i 关/a/li/ul/div/divtable idtable classtable table-striped table-bordered table-hover table-nowrapdata-operate-edit{:$auth-check(xxfb/banner/edit)}data-operate-del{:$auth-check(xxfb/banner/del)}width100%/table/div/div/div/div
/div5.js页面 define([jquery, bootstrap, backend, table, form], function ($, undefined, Backend, Table, Form) {var Controller {index: function () {// 初始化表格参数配置Table.api.init({extend: {index_url: xxfb/banner/index location.search,add_url: xxfb/banner/add,edit_url: xxfb/banner/edit,del_url: xxfb/banner/del,multi_url: xxfb/banner/multi,import_url: xxfb/banner/import,table: xxfb_banner,}});var table $(#table);// 初始化表格table.bootstrapTable({url: $.fn.bootstrapTable.defaults.extend.index_url,pk: id,sortName: weigh,fixedColumns: true,fixedRightNumber: 1,columns: [[{checkbox: true},{field: id, title: __(Id)},{field: site, title: __(Site), searchList: {1:__(Site 1),2:__(Site 2)}, formatter: Table.api.formatter.normal},{field: title, title: __(Title), operate: LIKE},{field: image, title: __(Image), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},{field: jump_type_list, title: __(Jump_type_list), searchList: {0:__(Jump_type_list 0),1:__(Jump_type_list 1),2:__(Jump_type_list 2),3:__(Jump_type_list 3)}, formatter: Table.api.formatter.normal},{field: switch, title: __(Switch), searchList: {0:__(Switch 0),1:__(Switch 1)}, table: table, formatter: Table.api.formatter.toggle},{field: weigh, title: __(Weigh), operate: false},{field: createtime, title: __(Createtime), operate:RANGE, addclass:datetimerange, autocomplete:false, formatter: Table.api.formatter.datetime},{field: operate, title: __(Operate), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}]]});// 为表格绑定事件Table.api.bindevent(table);//绑定TAB事件$(a[data-toggletab]).on(shown.bs.tab, function (e) {var typeStr $(this).attr(href).replace(#, );var options table.bootstrapTable(getOptions);options.pageNumber 1;options.queryParams function (params) {params.type typeStr;return params;};table.bootstrapTable(refresh, {});return false;});},add: function () {$(#content_show_hide).hide();$(#jump_url_show_hide).hide();onChange();Controller.api.bindevent();},edit: function () {var jump_type $(#c-jump_type_list).val();show_hide(jump_type);onChange();Controller.api.bindevent();},api: {bindevent: function () {Form.api.bindevent($(form[roleform]));}}};return Controller;
});
function onChange(){$(#c-jump_type_list).on(change,function(){var jump_type $(this).val();show_hide(jump_type);});
}
function show_hide(jump_type){var fruits [1, 2];if(fruits.includes(jump_type)){$(#jump_url_show_hide).show();$(#content_show_hide).hide();$(#c-jump_url).attr(data-rule, required);}else if(jump_type 3){$(#content_show_hide).show();$(#jump_url_show_hide).hide();$(#c-content).attr(data-rule, required);}else if(jump_type 0){$(#content_show_hide).hide();$(#jump_url_show_hide).hide();}
}
6.controller控制器 ?phpnamespace app\admin\controller\xxfb;use app\common\controller\Backend;/*** 轮播图** icon fa fa-circle-o*/
class Banner extends Backend
{/*** Banner模型对象* var \app\admin\model\xxfb\Banner*/protected $model null;protected $searchFields title;public function _initialize(){parent::_initialize();$this-model new \app\admin\model\xxfb\Banner;$this-view-assign(siteList, $this-model-getSiteList());$this-view-assign(jumpTypeListList, $this-model-getJumpTypeListList());$this-view-assign(switchList, $this-model-getSwitchList());}/*** 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改*//*** 查看*/public function index(){//当前是否为关联查询$this-relationSearch true;//设置过滤方法$this-request-filter([strip_tags, trim]);if ($this-request-isAjax()) {//如果发送的来源是Selectpage则转发到Selectpageif ($this-request-request(keyField)) {return $this-selectpage();}$type $this-request-request(type);list($where, $sort, $order, $offset, $limit) $this-buildparams();if ($type all || $type null) {$wheretype ;} else {$wheretype[site] $type;}$list $this-model-where($where)-where($wheretype)-order($sort, $order)-paginate($limit);$result array(total $list-total(), rows $list-items());return json($result);}return $this-view-fetch();}
}7. model模型 ?phpnamespace app\admin\model\xxfb;use think\Cache;
use think\Model;class Banner extends Model
{// 表名protected $name xxfb_banner;// 自动写入时间戳字段protected $autoWriteTimestamp integer;// 定义时间戳字段名protected $createTime createtime;protected $updateTime false;protected $deleteTime false;public static $fields [id, title, image, content ,jump_url, jump_type_list];// 追加属性protected $append [
// site_text,
// jump_type_list_text,
// switch_text];protected static function init(){self::afterInsert(function ($row) {$pk $row-getPk();$row-getQuery()-where($pk, $row[$pk])-update([weigh $row[$pk]]);});self::afterWrite(function ($row) {Cache::rm(banner_list);});}public static function list($site){return self::where([site $site, switch 1])-field(self::$fields)-order(weigh desc,id desc)-limit(10)-select();}public function getSiteList(){return [1 __(Site 1), 2 __(Site 2)];}public function getJumpTypeListList(){return [0 __(Jump_type_list 0), 1 __(Jump_type_list 1), 2 __(Jump_type_list 2), 3 __(Jump_type_list 3)];}public function getSwitchList(){return [0 __(Switch 0), 1 __(Switch 1)];}public function getSiteTextAttr($value, $data){$value $value ? $value : (isset($data[site]) ? $data[site] : );$list $this-getSiteList();return isset($list[$value]) ? $list[$value] : ;}public function getJumpTypeListTextAttr($value, $data){$value $value ? $value : (isset($data[jump_type_list]) ? $data[jump_type_list] : );$list $this-getJumpTypeListList();return isset($list[$value]) ? $list[$value] : ;}public function getSwitchTextAttr($value, $data){$value $value ? $value : (isset($data[switch]) ? $data[switch] : );$list $this-getSwitchList();return isset($list[$value]) ? $list[$value] : ;}public function getImageAttr($value){return cdnurl($value, true);}}代码完成直接复制即可使用
8.小知识点 下拉框动态加载不同的input框隐藏的input显示后增加必填属性自定义tab选项卡 文章转载自: http://www.morning.drtgt.cn.gov.cn.drtgt.cn http://www.morning.qbjrf.cn.gov.cn.qbjrf.cn http://www.morning.fldk.cn.gov.cn.fldk.cn http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn http://www.morning.fdmtr.cn.gov.cn.fdmtr.cn http://www.morning.hmsong.com.gov.cn.hmsong.com http://www.morning.prznc.cn.gov.cn.prznc.cn http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn http://www.morning.xckdn.cn.gov.cn.xckdn.cn http://www.morning.thbnt.cn.gov.cn.thbnt.cn http://www.morning.ttxnj.cn.gov.cn.ttxnj.cn http://www.morning.ntwxt.cn.gov.cn.ntwxt.cn http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn http://www.morning.nyqm.cn.gov.cn.nyqm.cn http://www.morning.fncgw.cn.gov.cn.fncgw.cn http://www.morning.yrbp.cn.gov.cn.yrbp.cn http://www.morning.fslrx.cn.gov.cn.fslrx.cn http://www.morning.yppln.cn.gov.cn.yppln.cn http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn http://www.morning.lsbjj.cn.gov.cn.lsbjj.cn http://www.morning.tongweishi.cn.gov.cn.tongweishi.cn http://www.morning.kqqk.cn.gov.cn.kqqk.cn http://www.morning.zcckq.cn.gov.cn.zcckq.cn http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn http://www.morning.mqpdl.cn.gov.cn.mqpdl.cn http://www.morning.ymwcs.cn.gov.cn.ymwcs.cn http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn http://www.morning.smnxr.cn.gov.cn.smnxr.cn http://www.morning.qztdz.cn.gov.cn.qztdz.cn http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.rsjf.cn.gov.cn.rsjf.cn http://www.morning.rzbgn.cn.gov.cn.rzbgn.cn http://www.morning.nqlcj.cn.gov.cn.nqlcj.cn http://www.morning.spwm.cn.gov.cn.spwm.cn http://www.morning.hffpy.cn.gov.cn.hffpy.cn http://www.morning.khtyz.cn.gov.cn.khtyz.cn http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn http://www.morning.srmpc.cn.gov.cn.srmpc.cn http://www.morning.gnwse.com.gov.cn.gnwse.com http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn http://www.morning.yrflh.cn.gov.cn.yrflh.cn http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn http://www.morning.pybqq.cn.gov.cn.pybqq.cn http://www.morning.fxxmj.cn.gov.cn.fxxmj.cn http://www.morning.thzwj.cn.gov.cn.thzwj.cn http://www.morning.dnls.cn.gov.cn.dnls.cn http://www.morning.cgbgc.cn.gov.cn.cgbgc.cn http://www.morning.prhqn.cn.gov.cn.prhqn.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.rrcrs.cn.gov.cn.rrcrs.cn http://www.morning.c7630.cn.gov.cn.c7630.cn http://www.morning.kaylyea.com.gov.cn.kaylyea.com http://www.morning.fbzyc.cn.gov.cn.fbzyc.cn http://www.morning.rkkpr.cn.gov.cn.rkkpr.cn http://www.morning.slnz.cn.gov.cn.slnz.cn http://www.morning.mczjq.cn.gov.cn.mczjq.cn http://www.morning.sgfgz.cn.gov.cn.sgfgz.cn http://www.morning.mrxgm.cn.gov.cn.mrxgm.cn http://www.morning.jwsrp.cn.gov.cn.jwsrp.cn http://www.morning.ymwny.cn.gov.cn.ymwny.cn http://www.morning.dyxlj.cn.gov.cn.dyxlj.cn http://www.morning.rnht.cn.gov.cn.rnht.cn http://www.morning.zxxys.cn.gov.cn.zxxys.cn http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn http://www.morning.ltksw.cn.gov.cn.ltksw.cn http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn http://www.morning.gqksd.cn.gov.cn.gqksd.cn http://www.morning.sbyhj.cn.gov.cn.sbyhj.cn http://www.morning.hjlwt.cn.gov.cn.hjlwt.cn http://www.morning.tbknh.cn.gov.cn.tbknh.cn http://www.morning.lkwyr.cn.gov.cn.lkwyr.cn http://www.morning.glwyn.cn.gov.cn.glwyn.cn http://www.morning.sbczr.cn.gov.cn.sbczr.cn http://www.morning.srkzd.cn.gov.cn.srkzd.cn http://www.morning.rwrn.cn.gov.cn.rwrn.cn http://www.morning.mlckd.cn.gov.cn.mlckd.cn http://www.morning.hrnrx.cn.gov.cn.hrnrx.cn http://www.morning.c7623.cn.gov.cn.c7623.cn