记录工作中遇到的各种关于fastadmin的知识点,进行记录
1、图片上传修改原设置是随机名称,现改为图片原名
在application/extra/upload.php中修改savekey的值
'savekey' => '/uploads/{year}{mon}{day}/{filename}',
2、在列表字段,添加类似(价格)上下箭头,点击排序
在对应的js文件中,添加sortable:true
{field: 'sum', title: __('Sum'),sortable:true},
3、添加按纽弹框,添加完后不关闭,可以继续添加(需要点击重置)
在对应的js文件,修改add方法
add: function () { // Controller.api.bindevent(); Form.api.bindevent($("form"), function(data,ret){ //成功的回调,如果返回false,将不会出现提示消息 Toastr.success("提交成功"); return false;//这行代码阻止弹框关闭 }, function(data, ret){ //失败的回调,如果返回false,将不会出现提示消息 }, function(success, error){ //如果返回falsle,将阻止表单的提交 //如果处理成功后我们可以使用Form.api.submit(this, success, error);再次提交表单 }); },
4、fastadmin创建一个父级菜单,把其它子菜单放进去
在权限管理-菜单规则中添加,父级选择对应的项目,规则随意填写,确定添加后,对应的项目会多出一个菜单项(点击会出错,要把要调整的菜单放到这个父菜单才行)
也是选择权限管理-菜单规则,把要调整的菜单栏进行编辑,调整父级到上面添加的菜单项即可
5、操作栏添加自定义按纽,调用后台方法,返回刷新
在对应的index.html中,添加
重置
在对应的js文件Table.api.bindevent(table);下面添加代码
//重置 $(".btn-process-1").click(function(){ var ids = Table.api.selectedids(table); layer.confirm('确定要重置所有考生查询信息吗?', {btn: ['是','否'] }, function(index){ layer.close(index); $.post("zkxx/user/reset", {ids:ids , action:'success', reply:''},function(response){ // alert(response.code); if(response.code == 200){ Toastr.success('重置成功') $(".btn-refresh").trigger('click'); }else{ Toastr.error('重置失败,请联系管理员') } }, 'json') }, function(index){ layer.close(index); } ); });
在对应的controll中添加reset方法
public function reset(){ $res['code'] = 200; return json($res); }
6、fastadmin 子用户switch开关权限
在对应的controll后台控制器里面添加
protected $multiFields = 'showswitch';
7、修改status状态,对不同的状态可以进行js处理
在对应的view-edit.html中,添加c-id字段
在对应的js文件中,修改api方法
api: { bindevent: function () { //Form.api.bindevent($("form[role=form]")); Form.api.bindevent($("form[role=form]"), function(data, ret){ //如果我们需要在提交表单成功后做跳转,可以在此使用location.href="链接";进行跳转 Toastr.success("成功"); }, function(data, ret){ Toastr.success("失败"); }, function(success, error){ //bindevent的第三个参数为提交前的回调 //如果我们需要在表单提交前做一些数据处理,则可以在此方法处理 //注意如果我们需要阻止表单,可以在此使用return false;即可 //如果我们处理完成需要再次提交表单则可以使用submit提交,如下 //Form.api.submit(this, success, error); var status = $("input[name='row[status]']:checked").val(); var that = this; //已结束状态 if(status==2){ var id = $("#c-id").val(); Fast.api.ajax({ url:'back/changeKecxOrder', data:{id:id} }, function(data){ //成功的回调-再次提交表单 Form.api.submit(that, success, error); }, function(data){ //失败的回调 return false; }); return false; } }); } }
在上面设定的类back中,添加自定义的方法changeKecxOrder
public function changeKecxOrder(){ $id = $_POST['id']; $orderData = KecxOrderModel::where('id',$id)->find(); $integral = round($orderData['total']/100); KecxUserModel::where('id',$orderData['userId'])->inc('total',$orderData['total'])->setInc('integral',$integral); $this->success('', null,null); }
8、根据status状态,设置不可编辑
在对应的controll中,重写edit方法,进行状态判断
/** * 编辑 */ public function edit($ids = null) { $row = $this->model->get($ids); if($row['status']==2 || $row['status'] == 3){ $this->error(__('该状态不可编辑')); }else{ //正常编辑 }
}
9、二级联动,选第一级时,二级选项自动匹配
主要就是修改js文件的add和edit方法
c-dept_id = 2级选项类名
c-org_id=1级选项类名
org_id=1级选项id
add: function () {
$("#c-dept_id").data("params", function(){
return {custom: {org_id: $("#c-org_id").val()}};
});
Controller.api.bindevent();
},
edit: function () {
$("#c-dept_id").data("params", function(){
return {custom: {org_id: $("#c-org_id").val()}};
});
Controller.api.bindevent();
},