laravel日常开发三大核心功能是表单验证、文件上传和邮件发送:表单验证需合理配置规则与错误提示;文件上传须注意表单设置、验证通配符及存储路径;邮件发送要正确配置环境、使用mailable类和队列。

这三块是 Laravel 日常开发中最常打交道的功能,用得熟不熟,直接关系到开发效率和代码健壮性。核心不在于写多少行,而在于规则怎么配、边界怎么控、错误怎么回。
表单验证:别只靠 required|email
验证不是把规则堆上去就完事。Laravel 的 validate() 方法会自动判断请求类型(JSON、form-data、x-www-form-urlencoded),并适配对应规则逻辑。
- 普通字段用 required|string|email|max:255 就够,但要注意 confirmed 规则必须配对出现(比如 password 和 password_confirmation)
- 嵌套字段如
meta.tags,直接写 meta.tags => 'array',框架自动解包校验 - 数组类输入(如多选标签、动态表单项)用通配符:'items.*.name' => 'required|string',比 foreach 手动循环干净得多
- 自定义错误提示建议统一放在 FormRequest 类里,通过
messages()方法返回,避免控制器里塞一堆字符串
文件上传:安全和路径要一起管
上传不是拿到文件就 store() 一下。从表单设置到存储路径,每步都有坑。
- 前端 form 标签必须带 enctype="multipart/form-data",否则 request()->file() 拿不到任何东西
- 单文件验证用 avatar => 'nullable|image|mimes:jpg,jpeg,png|max:2048';多文件必须用通配符:'photos.*' => 'required|image|mimes:jpg,png,gif|max:2048',否则会校验整个数组对象
- store('uploads', 'public') 返回的是相对路径(如 uploads/abc.jpg),记得先运行 php artisan storage:link,让 public/storage 指向 storage/app/public
- 生成可访问 URL 用 Storage::url('uploads/abc.jpg'),而不是拼接域名或硬编码路径
邮件发送:配置、类、视图三件套
发邮件不是调个 Mail::to() 就算完,环境适配和内容组织更关键。
- .env 中配置 MAIL_MAILER=smtp,MAIL_HOST、PORT、ENCRYPTION 要和邮箱服务商要求一致;Gmail 用户必须用应用专用密码,不能用账户登录密码
- Mailable 类用 php artisan make:mail OrderShipped 生成,build() 方法里指定 view 和 with() 数据,不要在控制器里拼 HTML
- 邮件模板放 resources/views/emails/order-shipped.blade.php,支持 Blade 语法和传入变量,结构清晰也方便测试
- 高并发场景下务必加队列:implements ShouldQueue + Mail::to(...)->queue(new OrderShipped($order)),避免用户等超时











