📜  laravel 手动验证用户 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:37.062000             🧑  作者: Mango

Laravel 手动验证用户 - PHP

在 Laravel 中,我们通常使用表单请求来验证用户输入。但是,有时我们需要手动验证用户。对于这种情况,Laravel 提供了非常方便的方式来进行手动用户验证。

步骤
  1. 创建验证器类

我们需要创建一个新的验证器类,并添加一些规则来验证用户输入。以下是一个示例验证类:

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 对象。

  1. 手动验证用户

在 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() 方法检查验证是否失败。如果有错误,则将错误重定向回上一个页面。

  1. 显示错误消息

在视图中,我们可以使用以下方法来显示验证错误消息:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

以上代码将检查是否有验证错误,并在页面的顶部显示所有错误消息。

结论

手动验证用户输入是 Laravel 中非常有用的功能。通过创建自定义验证器类和处理验证错误,我们可以确保用户输入符合我们的要求。