Laravel 10策略类Intelephense报错:预期bool类型却返回Response
解决Intelephense提示“Expected type 'bool'. Found 'Illuminate\Auth\Access\Response'”报错
问题根源:方法的返回类型声明与实际返回值类型不匹配。你声明方法返回
bool类型,但实际返回的是Illuminate\Auth\Access\Response实例(Response::allow()和Response::deny()的返回值),导致Intelephense触发类型检测报错。解决步骤:
- 确保已导入
Illuminate\Auth\Access\Response类(如果尚未导入) - 将方法的返回类型从
bool修改为Response
- 确保已导入
修正后的代码示例:
use Illuminate\Auth\Access\Response; public function create(User $user): Response { $roles = $user->roles->pluck('id')->toArray(); return in_array(Role::TRAINING_MANAGER, $roles) ? Response::allow() : Response::deny(); }
Laravel策略类的授权方法支持返回布尔值或Response对象,后者可用于返回自定义授权拒绝消息,这种写法符合Laravel规范,仅需修正返回类型声明即可消除报错。
内容的提问来源于stack exchange,提问作者Ayenew Yihune Demeke
相关产品推荐
相关产品推荐

