📜  rule::exists 与自定义消息 laravel - TypeScript (1)

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

使用 rule::exists 和自定义消息在 Laravel 中进行验证

在 Laravel 应用程序中,验证用户输入是至关重要的。一种常见的验证是检查数据库中的某个记录是否存在。为此,Laravel 提供了一个名为 rule::exists 的验证规则。在本文中,我们将探讨如何使用 rule::exists 规则,并如何自定义消息,以便更清楚地告诉用户出现了什么问题。

使用 rule::exists 验证规则

假设我们有一个用户模型,并且我们想验证一个输入的电子邮件地址是否存在于该模型中。可以使用以下代码完成此操作:

$request->validate([
    'email' => 'required|email|exists:users,email',
]);

在上面的代码中,我们指定验证规则,这个规则包括要验证的字段,以及它们必须遵守的规则。我们指定了 email 作为要验证的字段,并使用了三个验证规则:required、email 和 exists。

这里的 exists 规则指明了我们要验证的是 users 数据库表中的 email 字段。如果表中不存在用户输入的电子邮件,则验证失败。

自定义消息

默认情况下,Laravel 将为每个验证规则提供适当的默认错误消息。但是,在某些情况下,一些自定义消息可能会更好地传达验证失败的原因。例如,如果用户输入的电子邮件地址不存在,Laravel 的默认错误消息可能是“email field not found”。这里的消息不明确表明该字段缺少(或不存在)的原因,这可能会导致用户感到疑惑。

为了更好地帮助用户,我们可以自定义消息。我们可以使用 Laravel 的 withMessage 方法来指定自定义消息,如下所示:

$request->validate([
    'email' => 'required|email|exists:users,email',
], [
    'exists' => 'The selected :attribute does not exist.',
]);

在上述代码中,我们通过传递一个数组作为第二个参数来提供自定义消息。在这个数组中,我们指定了 exists 规则的自定义消息。其中,我们使用 :attribute 占位符来引用属性名称。将属性名称放在冒号后面,Laravel 将自动替换占位符(在本例中为“email”)。

总结

在本文中,我们看到了如何使用 rule::exists 规则来验证一个记录是否存在于数据库中。我们还学习了如何自定义消息,以便更好地告诉用户验证失败的原因。通过使用这些技术,我们可以更好地指导用户并提高应用程序的易用性。