Laraveladmin自定义拓展及常见问题(下)
书接上回,当提交表单后不跳转页面也不报错时咋处理呢。
六、提交表单不跳转页面且不报错
前面也说了,其实提交后发生了数据传送。但是由于验证未通过又返回了编辑页面,所以我们要做的是找到验证的方法,并把验证结果打印出来。于是找到这个页面vendorencorelaraveladminsrcForm。php,找到update方法,在returnback()withInput()withErrors(validationMessages),这一句前面加上一句dd(validationMessages);再次提交后就能看到类似如下所示的报错。
当然,这只是帮助找到问题。究竟如何解决还要根据实际情况而定。另外要记得最后把上述添加的语句屏去除。
七、联表删除数据
我说的联表删除并不是设计数据库的范畴,而是用这个框架更加灵活的处理删除数据。
如果你对这个框架了解的话,当点击table右侧删除按钮或左上角批量删除按钮时,程序会执行vendorencorelaraveladminsrcForm。php里的删除方法。现在我们要做的是针对某个页面做自定义的删除处理。所以我们就要在对应控制器写入自定义的方法。并且大多数删除操作都要执行回滚事务的,因此下面的删除方法比较具有普遍性,供大家调用。
删除评论
protectedfunctiondestroy(id){
idArrexplode(,,id);
foreach(idArrasv){
newsDB::table(comments)select(objtype,objid)where(id,v)first();
tableworks;
objidnewsobjid;
DB::transaction(function()use(table,objid,v){
DB::table(table)where(id,objid)decrement(commentcount);
DB::table(comments)where(id,v)delete();
DB::table(compoint)where(comid,v)delete();
});
}
}
}
再下面是更简单且更实用的功能了。
七、自定义验证规则报错提示。
如上图所示是我们常见的报错提示,格式和语种都不太符合我国国情。如果单个页面设置验证报错又太麻烦,所以我们就单独做一个国产验证报错(可以只做常用的一两项)。
一般我们都会把框架显示语言配置为中文,自然地验证提示也会执行中文。但是由于中文提示包不存在才会执行英文。那么我们就给他创建一个中文包,从admin的视图层里找到lang目录,再找到en目录里面的validation。php页面拷贝到与en平级目录的zhCN目录(如没有就创建)。只要做到这一步,程序就会执行中文包里的提示信息。我们现在要做的就是在validation。php页面根据不同规则定义不同的中文提示。
最后一个问题是解决权限。因为admin框架里面可以灵活自定义管理员菜单,给我们带来了很大的开发便利。但是如果上线后还存在这种超级权限的话,就会存在重大事故的风险。所以我们至少需要屏蔽删除和添加的按钮,或者给客户提供一个非超级管理员的角色,只能修改不能删除和添加菜单。
八,屏蔽系统菜单的删除和新增
首先说删除、编辑按钮,找到视图层的viewsreebranch。blade。php页面,很明显以下两句是控制编辑和删除的,
6;你可以直接用注释符号屏蔽掉,也可以用程序的管理员判断方法来决定是否给予显示。
同样的道理,找到另外一个视图页面viewsadminwidgetsbox。blade。php,把所有代码注释掉,就屏蔽了新建菜单的功能。在这里提醒的是,最好是删除或者注释变量。如果只是用注释和display隐藏,还是会存在安全隐患。
关于laraveladmin这个框架,目前我就总结到这么多了。以后在开发过程中有用到更好的功能再贴出来分享吧。整体上来说不得不佩服老外的东西确实很流逼。如果想要灵活运用,还是要多看看开发文档。