Laravel-admin自定義拓展及常見問題(下)


書接上回,當提交表單后不跳轉頁面也不報錯時咋處理呢。

六、提交表單不跳轉頁面且不報錯

      前面也說了,其實提交后發生了數據傳送。但是由於驗證未通過又返回了編輯頁面,所以我們要做的是找到驗證的方法,並把驗證結果打印出來。於是找到這個頁面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這個框架,目前我就總結到這么多了。以后在開發過程中有用到更好的功能再貼出來分享吧。整體上來說不得不佩服老外的東西確實很流逼。如果想要靈活運用,還是要多看看開發文檔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM