Laravel 8自定义表单验证Request类不存在 与官方文档效果不符原因是什么?
问题原因排查
- 控制器未正确引入自定义请求类
你在控制器顶部没有添加对应的use导入语句,Laravel 8中生成的UserUpdate请求类默认命名空间为App\Http\Requests\UserUpdate,需要在控制器文件头部加入:
use App\Http\Requests\UserUpdate;
注意命名空间中首字母App为大写,部分开发者误写为小写app会触发类找不到的错误。
- 请求类本身的命名空间、文件名不匹配
首先检查app/Http/Requests/目录下是否存在UserUpdate.php文件,文件名需要和类名完全一致、大小写匹配。其次打开该文件确认顶部命名空间声明为:
namespace App\Http\Requests;
如果是Linux类服务器,大小写敏感,本地Windows环境下大小写不匹配可正常运行,部署到线上就会触发类不存在错误。
- 框架自动加载缓存未更新
如果生成请求类后没有清理框架缓存、更新Composer自动加载映射,也会出现类找不到的问题,执行以下两个命令即可修复:
php artisan config:clear composer dump-autoload
关于是否为官方文档疏漏的说明
该问题不属于官方文档疏漏,Laravel官方文档的示例代码默认使用者已经掌握PHP命名空间导入、框架自动加载的基础规则,为了精简示例内容会省略通用的use导入语句,不属于文档错误。
内容的提问来源于stack exchange,提问作者user16945874
相关产品推荐
相关产品推荐

