📅  最后修改于: 2023-12-03 15:02:37.062000             🧑  作者: Mango
在 Laravel 中,我们通常使用表单请求来验证用户输入。但是,有时我们需要手动验证用户。对于这种情况,Laravel 提供了非常方便的方式来进行手动用户验证。
我们需要创建一个新的验证器类,并添加一些规则来验证用户输入。以下是一个示例验证类:
use Illuminate\Support\Facades\Validator;
class UserValidator
{
public function validate(array $data)
{
$rules = [
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|confirmed',
];
$messages = [
'name.required' => '名字不能为空',
'email.required' => '邮箱不能为空',
'email.email' => '邮箱格式不正确',
'email.unique' => '该邮箱已经注册过了',
'password.required' => '密码不能为空',
'password.confirmed' => '两次输入密码不一致',
];
return Validator::make($data, $rules, $messages);
}
}
以上代码创建了一个 UserValidator
类,它包含了我们需要验证的规则以及相关的错误消息。当我们调用 validate()
方法时,它将返回一个 Validator
对象。
在 Laravel 中,我们可以使用以下代码来手动验证用户输入:
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request, UserValidator $validator)
{
$data = $request->all();
$validator = $validator->validate($data);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator->errors());
}
// 执行其他代码
}
}
以上代码将请求数据传递给验证器,并使用 fails()
方法检查验证是否失败。如果有错误,则将错误重定向回上一个页面。
在视图中,我们可以使用以下方法来显示验证错误消息:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
以上代码将检查是否有验证错误,并在页面的顶部显示所有错误消息。
手动验证用户输入是 Laravel 中非常有用的功能。通过创建自定义验证器类和处理验证错误,我们可以确保用户输入符合我们的要求。