Laravel 提供灵活的表单验证机制,支持内置规则、闭包自定义及可复用的规则类,推荐使用 Form Request 解耦控制器逻辑,还可通过 ServiceProvider 全局注册规则提升复用性。

在 Laravel 中,表单请求验证是确保用户输入数据合法的重要环节。Laravel 提供了强大的 Validator 机制,除了使用内置规则外,还可以轻松自定义验证规则。下面教你如何写 Laravel 请求验证,以及如何创建自定义表单验证规则。
使用内置 Validator 验证请求
在控制器中,你可以通过 validate() 方法或使用 Validator 门面来验证请求数据。
示例:在控制器方法中验证表单
use Illuminate\Support\Facades\Validator;
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed',
]);
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
// 验证通过,继续处理逻辑
}
登录后复制
创建 Form Request 类进行验证
更推荐的方式是使用 Form Request,它将验证逻辑从控制器中解耦。
生成请求类:php artisan make:request StoreUserRequest
class StoreUserRequest extends FormRequest
{
public function authorize()
{
return true; // 控制是否授权该请求
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed',
];
}
}
登录后复制
在控制器中使用:
public function store(StoreUserRequest $request)
{
// 数据已自动验证,直接使用
User::create($request->validated());
}
登录后复制
自定义验证规则(使用闭包)
如果内置规则不够用,可以在验证时使用闭包来自定义逻辑。
示例:验证用户名不能为特定值
$validator = Validator::make($data, [
'username' => [
'required',
function ($attribute, $value, $fail) {
if (strtolower($value) === 'admin') {
$fail('用户名不能为 admin。');
}
},
],
]);
登录后复制
创建可复用的自定义验证规则
Laravel 允许你创建可复用的自定义规则类,适合复杂或多个地方使用的验证逻辑。
标签: php word laravel cad app ai red
还木有评论哦,快来抢沙发吧~