【发布时间】:2014-11-29 18:30:05
【问题描述】:
需要帮助更新我的验证规则中的唯一规则。我有一个抽象验证器,它将在存储到我的数据库和规则数组之前验证规则,我在创建或注册用户时将电子邮件设置为唯一,但是在更新用户时,enique 电子邮件不应该验证电子邮件是否由用户。
抽象类验证器
abstract class Validator {
protected $errors;
protected $attributes;
public function __construct($attributes = null)
{
$this->attributes = $attributes ?: \Input::all();
}
public function passes()
{
$validation = \Validator::make($this->attributes, $this->rules());
if ($validation->passes()) return true;
$this->errors = $validation->messages();
return false;
}
public function getErrors()
{
return $this->errors;
}
}
验证规则(UserRule.php)
use MyCustomValidatorNamespaceHere....
class UserRules extends Validator
public function rules()
{
return [
'email' => 'required|email|unique:users,email,id',
...
];
}
在我的 UserController 中,我在构造函数中注入了 UserRule。 (用户规则 $userRule)。这是更新方法中的代码。
public function update($id)
{
$if ($this->userRule->passes())
{
$this->user->find($id)->update(Input::all());
return .........
}
}
但验证总是失败并显示电子邮件已被接收的错误。请大家帮忙。
【问题讨论】:
-
我以通用方式解决了这个问题here on stackoverflow。如果您进行更新,它将自动调整您的规则,并在必要时向您的
:unique添加例外。
标签: php laravel laravel-4 eloquent laravel-validation