在创建新用户时,我使用以下规则进行验证:
protected $rules= [
'name' => 'required',
'email' => [
'required',
'unique:user',
'email'
]
];在更新现有用户时,我使用与上面所示相同的规则集,但如果用户根本不更改其电子邮件,则不希望出现验证错误。
我目前使用以下方法来解决这个问题:
if (!User::changed('email')) {
unset($user->email);
}对我来说,这感觉像是一个肮脏的变通方法,所以我想知道是否有更好的替代方案。
还要注意,changed方法是我自己编写的。有没有人知道是否有一个原生的Laravel 4方法来检查模型属性是否发生了变化?
谢谢!
发布于 2014-01-14 20:02:55
从2014-01-14开始,你可以使用sometimes属性,我相信泰勒在2天前将它们添加到了Laravel 4.1中
$v = Validator::make($data, array(
'email' => 'sometimes|required|email',
));sometimes仅验证存在的输入。如果您没有insert的默认值,这可能适合您的场景,也可能不适合您的场景。
http://laravel.com/docs/validation#conditionally-adding-rules
https://stackoverflow.com/questions/16517606
复制相似问题