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