fastadmin后台表格列表增加自定义操作的按钮-编辑的前面加个审核

整个流程梳理

1 先去语言包增加  审核

application/admin/lang/zh-cn/video.php

 

 

2 控制中 增加审核函数  发现审核就是在编辑的基础上 少了一些 字段 我直接复制编辑函数改下名字 就拿来用了

application/admin/controller/video.php

 public function auth($ids = null)
    {
        $row = $this->model->get($ids);
        if (!$row) {
            $this->error(__('No Results were found'));
        }
        $adminIds = $this->getDataLimitAdminIds();
        if (is_array($adminIds)) {
            if (!in_array($row[$this->dataLimitField], $adminIds)) {
                $this->error(__('You have no permission'));
            }
        }
        if ($this->request->isPost()) {
            $params = $this->request->post("row/a");
            if ($params) {
                $params = $this->preExcludeFields($params);
                $result = false;
                Db::startTrans();
                try {
                    //是否采用模型验证
                    if ($this->modelValidate) {
                        $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
                        $row->validateFailException(true)->validate($validate);
                    }
                    $result = $row->allowField(true)->save($params);
                    Db::commit();
                } catch (ValidateException $e) {
                    Db::rollback();
                    $this->error($e->getMessage());
                } catch (PDOException $e) {
                    Db::rollback();
                    $this->error($e->getMessage());
                } catch (Exception $e) {
                    Db::rollback();
                    $this->error($e->getMessage());
                }
                if ($result !== false) {
                    $this->success();
             
                } else {
                    $this->error(__('No rows were updated'));
                }
            }
            $this->error(__('Parameter %s can not be empty', ''));
        }
        $this->view->assign("row", $row);
        return $this->view->fetch();
    }

 

3   模板文件

application/admin/view/video/auth.html

代码如下

<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">

    <div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
        <div class="col-xs-12 col-sm-8">
             {$row.title|htmlentities} 
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Reason')}:</label>
        <div class="col-xs-12 col-sm-8">
           <input id="c-act_status" class="form-control" name="row[reason]" type="text" value="{$row.reason|htmlentities}">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
        <div class="col-xs-12 col-sm-8">
            <input id="c-act_status" class="form-control" name="row[status]" type="number" value="{$row.status|htmlentities}">
        </div>
    </div>
    
        <div class="form-group layer-footer">
        <label class="control-label col-xs-12 col-sm-2"></label>
        <div class="col-xs-12 col-sm-8">
            <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>

4  最重要的 管理列表 增加一个审核按钮

 public/assets/js/backend/video.js

添加如下代码

define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'video/index' + location.search,
                    add_url: 'video/add',
                    edit_url: 'video/edit',
                    auth_url: 'video/auth',
                    del_url: 'video/del',
                    multi_url: 'video/multi',
                    table: 'video',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    [
                        {checkbox: true},
                        {field: 'id', title: __('Id')},
                        {field: 'title', title: __('Title')},
                        {field: 'url', title: __('Url')},
                        {field: 'type', title: __('Type')},
                        {field: 'create_time', title: __('Create_time')},
                        {field: 'user_id', title: __('User_id')},
                        {field: 'status', title: __('Status')},
                        {field: 'praise_num', title: __('Praise_num')},
                        {field: 'reply_num', title: __('Reply_num')},
                        {field: 'view_num', title: __('View_num')},
                        {field: 'video_time', title: __('Video_time')},
  
                        {field: 'operate', title: __('Operate'), table: table, 
                             buttons: [
                                       {name: 'detail', text: __('Auth'),   icon: '', classname: 'btn btn-xs btn-primary btn-dialog', url: 'video/auth'}
                                     ], 
                        events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                    ]
                ]
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        add: function () {
            Controller.api.bindevent();
        },
        edit: function () {
            Controller.api.bindevent();
        },
        auth: function () {
            Controller.api.bindevent();//这个地方如果不加,会造成你有跳转页面  不会出现延迟的那种消息通知
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }
        }
    };
    return Controller;
});

 

5 最终的结果如图

 

原文地址:https://www.cnblogs.com/baker95935/p/12842606.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


是“帐”还是“账”---由FastAdmin用户中心引出的讨论有小伙伴对FastAdmin用户中心的“账号”提出异议,应该为“帐号”。查了资料,其实都没有问题不大。最初只有一个“帐”,后来为了区分造出了“账”。“帐”通“账,但不可以反过来,就是说使用“账”的地方可以使用“帐”,但“
好久不见了各位朋友,昨天在kali下倒腾东西的时候发现,我下了第三方框架fastadmin框架并安装时遇到的一些问题,然后整理下过程。下面我们开始今天的正题。首先先看下我们的环境,如下图所示:  然后我们看着官方文档一步步来执行。这里是官方文档链接https://doc.fastadmin.net
手把手教你安装FastAdmin到虚拟主机(phpStudy)原文: https://forum.fastadmin.nethread/2524下载FastAdmin下载FastAdmin1并解压到C:/www/FastAdmin目录目录列表如下安装phpStudy2018安装phpStudy20182并修改phpStudy为php-7.1.13-nts+Apache配置虚拟主机点
fastadmin控制器<?phpnamespaceapp\admin\controller\peizi;useapp\common\controller\Backend;/*****@iconfafa-circle-o*/classConfigextendsBackend{/***Config模型对象*@var\app\admin\model\weixinitem\Config*///p
创建用户CREATEUSER'video'@'%'IDENTIFIEDBY'video2019';.限制用户权限GRANTSELECT,INSERT,UPDATE,REFERENCES,DELETE,CREATE,DROP,ALTER,INDEX,CREATEVIEW,SHOWVIEWON`video_fastadmin`.*TO'video'@'%';
FastAdminCMS插件标签使用说明在CMS插件中的前端视图模板中有大量使用了自定义标签,我们在修改或制作模板的时候可以方便快捷的使用自定义标签来调用我们相关的数据。标签库位于/addons/cmsaglib/Cms.php文件,我们可以看到标签库有定义可调用的标签和属性,如下protected$tags
在项目所对应的js文件中的table.bootstrapTable({url:$.fn.bootstrapTable.defaults.extend.index_url,pk:'id',sortName:'id',columns:[{field:'operate',title:__('Operate'),t
为什么后台给管理员所在组分配了权限,管理员仍然提示没有权限访问如果是你自己添加的控制器,可以使用一键生成菜单命令(phpthinkmenu-c控制器名)来生成菜单,如果你是手动添加的规则菜单,权限规则必须细化到控制器的方法才可以。
我们都知道后台/admin是我们最常用的登录入口,方便的同时也留下了隐患,如果你刚好使用了admin/123456这种账号密码的方式,会导致我们的后台完全暴露在外。因此我们建议修改后台的登录入口,达到隐藏后台登录入口的效果。操作步骤1、首页修改application/config.php中deny_module_list
这是在edit方法里重写 staff是表名,username是字段名,$ids是当前数据的idtry{//是否采用模型验证if($this->modelValidate){$name=str_replace("\\model\\","\\validate\\",get_cla
FastAdmin自学笔记-目录FastAdmin开发第一天:了解FastAdmin框架(2019-09-09)FastAdmin开发第二天:安装环境FastAdmin开发第三天:FastAdmin开发第三天:安装FastAdmin
第一个图片在id前面加了模型名是因为第一个控制器//当前是否为关联查询$this->relationSearch=true; 
问题通过fieldlist动态添加的组件,是没法自动渲染的。关于内置组件的渲染fa官网也只对10个内置的组件,提供了重新渲染的方法。以下是:十个组件,两种方法。方法1:全部重新渲染Form.api.bindevent("form[role=form]")方法2:精确渲染并提供了10个组件精确渲染的方法,如下图如何
FastAdmin安装后点登录没有反应怎么办?很多小伙伴安装后点“登录”没有反应。这个URL是对的,但是页面就是不改变。如果这时候点击URL变了,那没有到登陆界面,一般是URL重写问题。一般如果是Apache服务器,FastAdmin是有默认的重写规则。一般这个问题出现在NGINX的服务
页面  视图内<divid="toolbar"class="toolbar"><ahref="javascript:;"class="btnbtn-primarybtn-refresh"title="{:__('Refresh')}"><i
server{listen80;server_namefastadmin.test*.fastadmin.test;root"C:/laragon/www/fastadmin/public/";indexindex.htmlindex.htmindex.php;location/{try_files$uri$uri//index.php$is_args$args;
在CMS插件中的前端视图模板中有大量使用了自定义标签,我们在修改或制作模板的时候可以方便快捷的使用自定义标签来调用我们相关的数据。标签库位于/addons/cmsaglib/Cms.php文件,我们可以看到标签库有定义可调用的标签和属性,如下protected$tags=[//标签定义:attr属性列
1、先把composer调成国内镜像:composerconfig-grepo.packagistcomposerhttps://packagist.phpcomposer.com不更换也行,但是很慢,建议更换 2、进项目根目录(不是public)composerrequireworkerman/gateway-worker 
学习thinkphp5的方法1.看文档2.看视频3.实际操作4.安装使用fastadmin研究代码今天第一步下载安装1.安装tp5,网上的composer下载安装,还需要切换国内镜像,一切从简。直接从官网,下载相关的包就行了。2.安装fastadmin,直接下载,不需要composer3.tp5文档地址:https://www.kancloud
使用下面,在检测当前的权限用户$adminIds=$this->getDataLimitAdminIds();halt($adminIds);使用下面,来检测信息的权限(获取查询的sql语句,会发现,admin_idinXXX)halt($this->model->getLastSql());一个配置方法,可能需要