在 Policies\UserAddressPolicy 中写 return view () 为什么页面没有显示

edit一个不属于自己的收货地址会提示如下错误

Symfony \ Component \ HttpKernel \ Exception \ AccessDeniedHttpException
This action is unauthorized.

我想把这个错误显示一个错误页面,修改了Policies\UserAddressPolicy类的own方法如下:

public function own(User $user, UserAddress $address)
    {
        if ($address->user_id!=$user->id){
            return view ('pages.error',['msg'=>'该收货地址不属于你!']);
        }
        return true;
    }

但是页面却没有显示对应的错误页面,而是显示了id为10的收货人地址信息,为什么?
return view();只能写在contoller中吗?为什么Exceptions\InvalidRequestException中写return view();就能显示对应的页面?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

return view() 只能写在几个有限的地方:控制器、中间件、错误处理逻辑等。

如果你想修改错误页面,需要针对 AccessDeniedHttpException 这个异常来处理,参考文档:https://learnku.com/docs/laravel/5.5/errors#render...

5年前 评论
讨论数量: 5
leo

return view() 只能写在几个有限的地方:控制器、中间件、错误处理逻辑等。

如果你想修改错误页面,需要针对 AccessDeniedHttpException 这个异常来处理,参考文档:https://learnku.com/docs/laravel/5.5/errors#render...

5年前 评论

这几个地方是从哪里看出来的嘞?我应该根据什么判断哪个地方能写?还是记住这几个地方(控制器-Http\Controllers、中间件-Http\Middleware、错误处理逻辑Exceptions)

5年前 评论

@leo 老师,同问,为什么只有这几个地方才能用

5年前 评论
leo

@等车的猪 既然你这么问了,那我只好回答你,看 Laravel 框架源码

5年前 评论

@leo 好的,老师,明天看看

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!