📜  如果另一个字段不为空,则需要 laravel 8 验证 - PHP (1)

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

Laravel 8 验证:当另一个字段不为空时需要验证

有时候我们需要在表单中添加一些必填字段。但是如果其中一个字段不为空时,就需要验证另一个字段是否存在或符合特定规则。在 Laravel 8 中,可以很容易地实现这个需求。本文将向你介绍如何实现这种验证方式。

在表单中设置需要验证的字段

首先,在表单中需要设置需要验证的字段和对应的规则。比如,我们将通过用户名和电子邮件地址验证用户的身份。以下是表单代码:

<form>
    <input type="text" name="username" required>
    <input type="email" name="email" required>
    <button type="submit">Submit</button>
</form>

这个表单包含两个必填字段:用户名和电子邮件地址。现在,我们需要在这两个字段都不为空时,验证它们是否符合要求。

创建验证规则

接下来,我们需要创建验证规则。Laravel 8 提供了一个很方便的方法来创建自定义验证规则。我们可以使用 Rule 参考类来创建一个规则对象。以下是用来验证用户名和电子邮件地址的规则代码:

use Illuminate\Validation\Rule;

$rules = [
    'username' => Rule::requiredIf(function () use ($request) {
        return ! empty($request->email);
    }),
    'email' => Rule::requiredIf(function () use ($request) {
        return ! empty($request->username);
    })->email(),
];

这个规则对象包含两个必填字段,分别是用户名和电子邮件地址。我们分别使用 requiredIf 规则来指示当另一个字段不为空时需要验证这个字段。例如,如果电子邮件地址字段不为空,则会验证用户名字段是否存在。反之亦然。

但注意,我们还需要在电子邮件地址字段上使用 email 规则来验证其是否符合电子邮件格式。

实现表单验证

最后,我们需要在控制器中实现表单验证。可以使用 validate 方法来验证表单数据。以下是代码示例:

use Illuminate\Validation\ValidationException;

try {
    $validatedData = $request->validate($rules);
    // ...
} catch (ValidationException $e) {
    // ...
}

在上面的代码示例中,我们使用 $request->validate($rules) 去验证表单数据,如果验证失败则会抛出一个 ValidationException 异常。如果验证成功,则 $validatedData 变量将包含验证后的表单数据。

最后,在 catch 子句中,我们可以编写相应的代码来处理验证异常。

结论

本文介绍了如何实现在 Laravel 8 中使用一个表单字段的状态来验证另一个表单字段。通过使用 Rule 参考类来实现自定义的验证规则,我们可以轻松地实现这个功能。希望这个教程能帮助你在你的 Laravel 应用程序中实现一些更强大的表单验证。