1、除开超级管理员账号,其他账号登录时,点击切换按钮时,提示无权限
当表格列表中,有其他切换状态的按钮时,需要在控制器中新增一个定义,否则除开超级管理员,其他账号会出现无权限的提示(status为默认的,所以不需要单独在控制器中设置)。
具体案例如下:
JS中:
{
field: 'is_top',
title: __('Is_top'),
searchList: {"0": __('Is_top 0'), "1": __('Is_top 1')},
yes: '1',
no: '0',
formatter: Table.api.formatter.toggle
},
控制器中定义属性值:
protected $multiFields = ['is_top', 'is_red', 'is_hot', 'status'];//需要设置,否则列表中操作时,其他账号会提示无权限
2、A表的列表页中,点击按钮,弹出弹框,弹框内容为B表的列表页(列表,增删改查等按钮)
2.1、总体页面展示:
2.1.1、A表的列表页:
2.1.2、A列表页点击 回答 按钮的弹框页:
2.2、A页面代码:
2.2.1、控制器代码:
//获取按钮权限
//为了JS能获取到,同时判读权限 判断是否有对应权限
$this->assignconfig('answerAuth', $this->auth->check('law/question/answer/index'));
2.2.2、JS代码:
(注:url中传递的question_id,为B表中与A表中的关联字段)
{
field: 'buttons', title: __('其他操作'), table: table, operate: false,
buttons: [
{
name: 'answer',
text: '回答',
title: '回答',
icon: 'fa fa-list',
//btn-xs:特别小按钮 btn-sm:小按钮 btn-lg:大按钮
//btn-info:一般信息(蓝色) btn-danger:危险信息(红色) btn-default:默认样式(白色) btn-primary:首选项(深蓝) btn-success:成功(绿色) btn-warning:警告(黄色)
//btn-dialog:弹窗 btn-ajax:ajax请求 btn-addtabs:新选项卡
classname: 'btn btn-xs btn-primary btn-dialog',
url: 'law/question/answer/index?question_id={$row.id}',//question_id为B表中与A表中的关联字段
visible: function (row) {
//重点在这
//返回true时按钮显示,返回false隐藏
return true;
}
},
],
events: Table.api.events.operate,
formatter: function (value, row, index) { //隐藏自定义的按钮
var that = $.extend({}, this);
var table = $(that.table).clone(true);
//权限判断
if(Config.answerAuth != true){ //判断该按钮是否有权限
$(table).data("buttons-answer", null);
that.table = table;
}else{
}
return Table.api.formatter.buttons.call(that, value, row, index);
},
},
2.3、B页面代码:
2.3.1、控制器:
接收参数
//接收页面参数,传递参数
$question_id = $this->request->request('question_id', 0);
$this->question_id = $question_id;
$this->assignconfig('question_id', $question_id);
2.3.2、视图文件中的index.html:
主要用于删除A页面中的跳转按钮带的IDS参数
<script>
//删除url的id参数
function funcUrlDel(name) {
var loca = window.location;
var baseUrl = loca.origin + loca.pathname + "?";
var query = loca.search.substr(1);
if (query.indexOf(name) > -1) {
var obj = {};
var arr = query.split("&");
for (var i = 0; i < arr.length; i++) {
arr[i] = arr[i].split("=");
obj[arr[i][0]] = arr[i][1];
}
delete obj[name];
var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&");
history.pushState(null, null, url);
return;
} else {
return window.location.href;
}
}
</script>
2.3.3、JS代码:
处理A页面传递过来的url中的IDS,转换成B页面对应的关联字段名称(此处为question_id)
visible: false,//浏览模式(卡片切换)、显示隐藏列、导出、通用搜索全部隐藏
showToggle: false,//浏览模式可以切换卡片视图和表格视图两种模式
showColumns: false,//列,可隐藏不显示的字段
search: false,//快速搜索,搜索框
showExport: false,//导出
queryParams: function (params) {
var filter = JSON.parse(params.filter);
var op = JSON.parse(params.op);
var ids = Fast.api.query('ids');
if (ids) {
filter.question_id = ids;
op.question_id = '=';
params.filter = JSON.stringify(filter);
params.op = JSON.stringify(op);
funcUrlDel('ids');
}
return params;
},