📅  最后修改于: 2023-12-03 15:17:16.318000             🧑  作者: Mango
在 Laravel 中,我们可以使用请求验证器来验证用户输入的数据。这是一种非常有用的功能,因为它能够减少应用程序中的错误数据,并且可以保证应用程序的安全性。
Laravel 提供了一个 make
方法来创建一个验证规则的实例。在这个实例中,我们可以定义要验证的字段、验证规则和对应的消息。
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|max:255',
'password' => 'required|string|min:8',
], [
'name.required' => '请填写用户名',
'name.string' => '用户名必须为字符串',
'name.max' => '用户名最大长度为255个字符',
'email.required' => '请填写邮箱',
'email.email' => '请填写正确的邮箱格式',
'email.unique' => '该邮箱已被注册',
'email.max' => '邮箱最大长度为255个字符',
'password.required' => '请填写密码',
'password.string' => '密码必须为字符串',
'password.min' => '密码最小长度为8个字符',
]);
if ($validator->fails()) {
return response()->json([
'status' => false,
'message' => $validator->errors()->first(),
]);
}
...
}
}
在上面的代码中,我们使用了 Validator
Facade 来创建一个验证器实例,使用了 make
方法将要验证的字段、验证规则和对应的消息传入。如果验证失败,我们会将第一个错误消息返回给客户端。
当我们需要更新一个模型的属性时,也需要对输入的数据进行验证。在 Laravel 中,我们可以使用 update
方法来更新模型,而验证规则则可以和创建时的一样,使用 make
方法创建一个实例即可。
class UserController extends Controller
{
public function update(Request $request, User $user)
{
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email,' . $user->id . '|max:255',
'password' => 'sometimes|string|min:8',
], [
'name.required' => '请填写用户名',
'name.string' => '用户名必须为字符串',
'name.max' => '用户名最大长度为255个字符',
'email.required' => '请填写邮箱',
'email.email' => '请填写正确的邮箱格式',
'email.unique' => '该邮箱已被注册',
'email.max' => '邮箱最大长度为255个字符',
'password.string' => '密码必须为字符串',
'password.min' => '密码最小长度为8个字符',
]);
if ($validator->fails()) {
return response()->json([
'status' => false,
'message' => $validator->errors()->first(),
]);
}
$user->fill($request->only(['name', 'email', 'password']))->save();
...
}
}
在更新时,我们在邮箱验证规则中使用了 unique
规则,并且添加了一个条件,防止更新时与其他用户的邮箱发生冲突。在密码验证规则中,我们使用了 sometimes
规则,这意味着用户更新时可以不填写密码。
Laravel 提供了很强大的请求验证器,使我们可以轻松地验证用户输入的数据。在使用 make
方法创建验证规则实例时,我们可以通过指定要验证的字段、验证规则以及对应的消息来设置验证规则。在更新数据时,我们可以使用 unique
规则来防止数据冲突,并使用 sometimes
规则来实现可选字段验证。