zoukankan      html  css  js  c++  java
  • Laraveladmin自定义拓展及常见问题(下)

    书接上回,当提交表单后不跳转页面也不报错时咋处理呢。

    六、提交表单不跳转页面且不报错

          前面也说了,其实提交后发生了数据传送。但是由于验证未通过又返回了编辑页面,所以我们要做的是找到验证的方法,并把验证结果打印出来。于是找到这个页面vendor\encore\laravel-admin\src\Form.php,找到update方法,在return back()->withInput()->withErrors($validationMessages),这一句前面加上一句dd($validationMessages);再次提交后就能看到类似如下所示的报错。

     

          当然,这只是帮助找到问题。究竟如何解决还要根据实际情况而定。另外要记得最后把上述添加的语句屏去除。

    七、联表删除数据

          我说的联表删除并不是设计数据库的范畴,而是用这个框架更加灵活的处理删除数据。

     

          如果你对这个框架了解的话,当点击table右侧删除按钮或左上角批量删除按钮时,程序会执行vendor\encore\laravel-admin\src\Form.php里的删除方法。现在我们要做的是针对某个页面做自定义的删除处理。所以我们就要在对应控制器写入自定义的方法。并且大多数删除操作都要执行回滚事务的,因此下面的删除方法比较具有普遍性,供大家调用。

    //删除评论

          protected function destroy($id){

            $id_Arr = explode(',',$id);

            foreach($id_Arr as $v){

                 $news =DB::table('comments')->select('obj_type','obj_id')->where('id',$v)->first();

                  $table = 'works';

                 $ obj_id= $news->obj_id;

                        DB::transaction(function()use($table,$obj_id,$v) {

                             DB::table($table)->where('id',$obj_id)->decrement('comment_count');

                                DB::table('comments')->where('id',$v)->delete();

                                DB::table('com_point')->where('com_id',$v)->delete();

                        }); 

     

                 }

                   

               }

             

          }

    再下面是更简单且更实用的功能了。

    七、自定义验证规则报错提示。

     

    如上图所示是我们常见的报错提示,格式和语种都不太符合我国国情。如果单个页面设置验证报错又太麻烦,所以我们就单独做一个国产验证报错(可以只做常用的一两项)。

    一般我们都会把框架显示语言配置为中文,自然地验证提示也会执行中文。但是由于中文提示包不存在才会执行英文。那么我们就给他创建一个中文包,从admin的视图层里找到lang目录,再找到en目录里面的validation.php页面拷贝到与en平级目录的zh_CN目录(如没有就创建)。只要做到这一步,程序就会执行中文包里的提示信息。我们现在要做的就是在validation.php页面根据不同规则定义不同的中文提示。

     

     

    最后一个问题是解决权限。因为admin框架里面可以灵活自定义管理员菜单,给我们带来了很大的开发便利。但是如果上线后还存在这种超级权限的话,就会存在重大事故的风险。所以我们至少需要屏蔽删除和添加的按钮,或者给客户提供一个非超级管理员的角色,只能修改不能删除和添加菜单。

    八,屏蔽系统菜单的删除和新增

          首先说删除、编辑按钮,找到视图层的views\tree\branch.blade.php页面,很明显以下两句是控制编辑和删除的,<a href="/{{ $path }}/{{ $branch[$keyName]}}/edit"><i class="fa fa-edit"></i></a>

    6              <ahref="javascript:void(0);" data-id="{{ $branch[$keyName]}}" class="tree_branch_delete"><i class="fafa-trash"></i></a>;你可以直接用注释符号屏蔽掉,也可以用程序的管理员判断方法来决定是否给予显示。

      

     同样的道理,找到另外一个视图页面views\admin\widgets\box.blade.php,把所有代码注释掉,就屏蔽了新建菜单的功能。在这里提醒的是,最好是删除或者注释变量。如果只是用注释和display隐藏,还是会存在安全隐患。

     

      关于laravel-admin这个框架,目前我就总结到这么多了。以后在开发过程中有用到更好的功能再贴出来分享吧。整体上来说不得不佩服老外的东西确实很流逼。如果想要灵活运用,还是要多看看开发文档。

  • 相关阅读:
    [moka同学笔记]yii2.0缓存
    [moka同学笔记]yii2.0查询数据库
    [moka同学笔记]yii2.0数据库操作以及分页
    [moka同学笔记]yii2.0表单的使用
    [moka同学笔记]bootstrap基础
    yii2时间日期控件的使用[转]
    java基础练习[一]
    上传照片
    selenium截图功能
    pip更新报错问题
  • 原文地址:https://www.cnblogs.com/zuoshoupai/p/6678609.html
Copyright © 2011-2022 走看看