Laravel Illuminate \ Validation \ Rule not found

问题描述 投票:7回答:5

我正在尝试提交表单并验证内容。在其中一个请求中,我需要制定一个特殊规则。我按照文档说它使用unique并声明规则。

use Illuminate\Validation\Rule;

Validator::make($data, [
'email' => [
    'required',
    Rule::unique('users')->ignore($user->id),
],
]);

我正在尝试文档中的示例,但我得到了这个错误:

Class 'Illuminate\Validation\Rule' not found

我宣布了这条线

use Illuminate\Validation\Rule;

在我的控制器中,但错误仍然存​​在。

php laravel laravel-validation
5个回答
3
投票

您不必为此使用Rule类。

只需遵循以下规则即可:

'email' => 'required|unique:users,email,' . $user->id

0
投票

您发布的示例中的Rule类用于验证唯一字段。例如,如果您有一封电子邮件,您将希望在表格中是唯一的,当您要编辑记录时,在保存时,将收到验证器错误,因为您正在保存已在数据库中的相同电子邮件。

您发布的示例:

use Illuminate\Validation\Rule;

Validator::make($data, [
'email' => [
    'required',
    Rule::unique('users')->ignore($user->id),
],
]);

与此案例相关,编辑记录并验证电子邮件(表用户中唯一)。此示例避免针对同一用户验证电子邮件 -

要使用它,您必须添加类(不包括在laravel安装中)。 qazxsw poi你有它。

在您的问题中,您说的是使用唯一规则。唯一规则适用于表格,电子邮件,个人身份识别(法律)等必须具有唯一性的字段。验证您是否需要唯一规则。


0
投票

在Laravel 5.3+上添加了Here类。 我确定你已经测试了旧的laravel版本。

见问题(PR)15809:Illuminate\Validation\Rule


0
投票

我在版本[5.3] Object based unique and exists rules for validation.上遇到了这个问题。我刚刚更新到最新的补丁版本(在我的情况下是v5.3)并且一切正常!


-2
投票

你为什么不尝试这样的方法:

v5.3.31

如果列也是如果名为email laravel将自动知道,否则执行

$validator = Validator::make($request->all(), [
    'email' => 'required|unique:<table_name>',
]);

if ($validator->fails()) {
    ...
}

以下是文档验证部分的链接:required|unique:<table_name>,<column_name>

© www.soinside.com 2019 - 2024. All rights reserved.