Laravel 5.3验证独特

时间:2017-05-12 10:20:22

标签: php laravel validation laravel-5.3 laravel-validation

我目前正在努力验证Laravel,特别是使用unique验证器。

我有一个表,其中包含一些值,现在重要的是templateUrl。我所做的是,向用户显示一个表单,其中包含之前输入的templateUrl(保存之后)和其他一些值,然后他可以更改它或保持不变。此templateUrl在此表中应该是唯一的。因此,如果用户在表单中更改了此templateUrl,并且尚未使用它,则一切正常,但如果用户现在尝试保存它而不更改templateUrl,则验证会引发错误(因为这已经保存在表中,即使它是同一行......)。因此,即使它的行和列相同,似乎也无法保存该值。我希望您知道我的意思吗?

这是验证的代码:

$this->validate($request,
            [
                'templateUrl' => 'required|unique:users'
            ],
            [
                'templateUrl.unique' => 'Diese URL ist leider schon vergeben. Bitte suchen Sie sich eine andere aus!'
            ]
        );

我可以做些什么,以便能够保存值,如果它是同一个用户,那么"进入"或者让价值保持原样? 当然,没有其他用户应该能够输入相同的templateUrl,这就是为什么我需要这样的验证,但是如果用户让templateUrl保持不变并且只是更改表单中的其他字段当然它应该有用。

任何想法,技巧?

1 个答案:

答案 0 :(得分:1)

您可以向验证添加额外参数以忽略给定行,在本例中为当前行。有关这方面的更多信息,请参阅the documentation

例如:

$this->validate($request,
    [
        'templateUrl' => 'required|unique:users,templateUrl,' . $user->id // Ignore rows with primary key $user->id
    ],
    [
        'templateUrl.unique' => 'Diese URL ist leider schon vergeben. Bitte suchen Sie sich eine andere aus!'
    ]
);