laravel-admin 關閉debug模式導致異常信息到頁面的排查


larave-admin 編輯/增加處理方法如下

關閉laravel全局debug模式異常信息不顯示

protected function form()
    {
   
        $form->text('nick', __('昵稱'))->required();
        $form->radio('sex', '性別')->options(['1' => '男', '2' => '女'])->default('0');
        $form->tools(function (Form\Tools $tools) {
            $tools->disableDelete();
        });
        $form->saving(function (Form $form) {
       
               
                /**
                 * @var UserModel $user
                 */
                $user = $form->model();
         
                /**
                 * 檢查昵稱的唯一性
                 */
                $user->checkNick($form->nick, $user->id); //此處昵稱合法性檢查,不通過會拋出異常
       
        });
        return $form;


    }

$user->checkNick($form->nick, $user->id);

此處昵稱合法性檢查,不通過會拋出異常,在開啟debug模式的情況下異常信息是可以顯示出來

修正代碼如下嘗試

捕獲異常的代碼

  • 這種不可以
 return admin_error('操作失敗', $ex->getMessage());  
  • 這種可以解決問題,但是返回會刷新頁面,特別是新增的時候很痛苦。
  $error = new MessageBag([
                    'title'   => '操作失敗',
                    'message' => $ex->getMessage().$ex->getFile().$ex->getLine(),
                ]);
                return back()->with(compact('error'));
  • 添加沒有問題,錯誤信息提示到右上角

但是編輯的時候這個異常不會捕獲,編輯還會觸發其它的事件

···
return admin_toastr($ex->getMessage(), 'error');





protected function form()
    {
   
        $form->text('nick', __('昵稱'))->required();

        $form->radio('sex', '性別')->options(['1' => '男', '2' => '女'])->default('0');

        $form->tools(function (Form\Tools $tools) {
            $tools->disableDelete();
        });
        $form->saving(function (Form $form) {
            try{
               
                /**
                 * @var UserModel $user
                 */
                $user = $form->model();
         
                /**
                 * 檢查昵稱的唯一性
                 */
                $user->checkNick($form->nick, $user->id);
           
            }catch(\Exception $ex){

                return admin_toastr($ex->getMessage(), 'error');
                $error = new MessageBag([
                    'title'   => '操作失敗',
                    'message' => $ex->getMessage().$ex->getFile().$ex->getLine(),
                ]);
                return back()->with(compact('error'));
                // throw new \Exception($ex->getMessage());
             
            }
        });
        return $form;

    }
  • github issue

https://github.com/z-song/laravel-admin/issues/3590

vendor/encore/laravel-admin/resources/views/partials/exception.blade.php

config/admim.php 中記得配置 app.config 為 admin.exception

框架里面修改是最容易的,配置文件config/admin.php 加個參數,后台的異常模板在處理下OK

自己改需要覆蓋頁面輸出的布局,修改異常模板路徑。。。

參考:
laravel 異常處理 https://blog.csdn.net/sinat_26918145/article/details/53709607

https://github.com/z-song/laravel-admin/issues/3590


免責聲明!

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



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