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