📜  laravel 验证 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:50.964000             🧑  作者: Mango

Laravel 验证 - PHP

在 Laravel 中,验证是一个非常重要的功能,可以验证用户提交的数据是否符合预期,以确保数据的正确性。本文将介绍 Laravel 验证的基本用法,包括验证规则、错误消息、自定义验证规则等。

验证规则

Laravel 中内置了许多常用的验证规则,例如 required、email、numeric 等,还支持自定义规则。下面我们以验证一个用户注册表单为例,看一下如何使用 Laravel 验证规则。

use Illuminate\Http\Request;

public function register(Request $request)
{
    $validatedData = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users,email|max:255',
        'password' => 'required|string|min:6|max:255|confirmed',
    ]);

    // ...
}

在上面的代码中,我们使用了 validate 方法来验证请求中的表单数据,该方法接收一个数组作为参数,数组的键是表单字段,值是该字段需要满足的验证规则。例如 'name' => 'required|string|max:255' 表示 name 字段是必填的、必须是字符串、长度不超过 255 个字符。如果验证失败,则会自动将错误信息返回给客户端。

错误消息

当验证失败时,Laravel 会自动将错误信息添加到表单数据中,我们可以通过 errors 方法访问这些错误信息。例如在 Blade 模板中可以这样显示错误消息:

@if ($errors->has('name'))
    <div class="invalid-feedback">{{ $errors->first('name') }}</div>
@endif

其中 $errors 是 Laravel 提供的全局变量,用于访问验证错误消息。

自定义验证规则

除了使用 Laravel 内置的验证规则,我们还可以自定义规则来灵活应对各种验证场景。下面我们以验证用户名是否可用为例,介绍如何自定义验证规则。

use Illuminate\Contracts\Validation\Rule;

class UniqueUsername implements Rule
{
    public function passes($attribute, $value)
    {
        return User::where('username', $value)->count() === 0;
    }

    public function message()
    {
        return 'The :attribute has already been taken.';
    }
}

public function register(Request $request)
{
    $validatedData = $request->validate([
        'username' => ['required', 'string', 'max:255', new UniqueUsername],
        // ...
    ]);

    // ...
}

在上面的代码中,我们实现了一个名为 UniqueUsername 的验证规则,并将其作为 username 字段的验证规则。该规则查找数据库中是否已经存在相同的用户名,如果不存在则验证通过。

小结

本文介绍了 Laravel 验证的基本用法,包括验证规则、错误消息、自定义验证规则等。通过学习本文,你应该能够掌握 Laravel 中的验证功能,以便在开发中灵活应对各种验证场景。