在Laravel中,表单请求验证是确保用户输入数据合法性和安全性的关键环节。Laravel提供了多种验证方式,包括手动验证、表单请求验证和自定义验证规则。
手动验证是通过Validator
门面或Validator
服务容器直接在控制器中进行验证。以下是一个手动验证的示例:
// app/Http/Controllers/UserController.php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class UserController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|min:6', ]); if ($validator->fails()) { return redirect('user/create') ->withErrors($validator) ->withInput(); } // 存储用户逻辑 return redirect('user')->with('status', 'User created successfully!'); } }
在上述代码中,通过Validator::make
方法创建验证器,并定义了验证规则。如果验证失败,会重定向到表单页面并显示错误信息。
表单请求验证是Laravel中更高级的验证方式,通过创建一个表单请求类来封装验证逻辑。以下是一个表单请求验证的示例:
// php artisan make:request StoreUserRequest namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StoreUserRequest extends FormRequest { public function authorize() { return true; // 确保用户有权发送请求 } public function rules() { return [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|min:6', ]; } }
在上述代码中,StoreUserRequest
类继承了FormRequest
,并定义了验证规则。通过authorize
方法可以控制用户是否有权发送请求。
在控制器中,可以直接使用表单请求类:
// app/Http/Controllers/UserController.php namespace App\Http\Controllers; use App\Http\Requests\StoreUserRequest; class UserController extends Controller { public function store(StoreUserRequest $request) { // 存储用户逻辑 return redirect('user')->with('status', 'User created successfully!'); } }
通过表单请求验证,可以将验证逻辑从控制器中分离出来,使代码更加清晰和可维护。
表单请求验证是Laravel开发中非常重要的部分。通过合理使用手动验证和表单请求验证,可以确保用户输入的数据合法性和安全性。