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