【发布时间】:2017-10-11 15:08:29
【问题描述】:
我目前正在努力验证 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不变并且只是更改表单中的其他字段,它当然应该工作。
有什么想法、技巧吗?
【问题讨论】:
-
类似这样的东西 - laracasts.com/discuss/channels/requests/… ??
-
@SirjanSharma 是的,看起来正确,但我没有得到我需要使用的值...我现在尝试了这个:` 'templateUrl' => 'required|unique:users,id, '.$user->id
, but it doesn't validate, so 2 users can have the sametemplateUrl`,我需要使用哪些参数? -
@SirjanSharma 知道了,需要使用 templateUrl 作为第二个参数
标签: php laravel validation laravel-5.3 laravel-validation