我似乎对eloquent的验证方法有一个问题,它返回的应该与它应该的相反。
这是我的验证调用,它应该失败,因为电子邮件是重复的,并且名字只有1个字符,当最低要求是2时。
// Handle the submission of changed user details.
public function put_settings()
{
$id = Input::get('id');
$validation = Account::validate(Input::all());
if($validation->fails())
{
return Redirect::to_route('settings')->with_errors($validation)->with_input();
}
else
{
Account::update($id, array(
'first_name' => Input::get('first_name'),
'last_name' => Input::get('last_name'),
'email' => Input::get('email')
));
return Redirect::to_route('settings');
}
}
这是我的验证规则验证方法(位于我的模型中):
public static function validate($data)
{
$rules = array(
'first_name' => 'required|min:2|max:80',
'last_name' => 'required|min:2|max:80',
'email' => 'required|min:5|max:180|unique:users',
);
return Validator::make($data, $rules);
}
为什么这会更新我的数据库,即使它在验证时失败。尝试使用fail()和pass()方法,它们似乎与它们应该是相反的。有什么想法吗?
答案 0 :(得分:1)
您是否尝试调试输入并查看实际提交的内容?
此外,您可能需要检查 auth.php ,看看您是否为用户选择电子邮件作为用户名 。这样,如果您拨打unique:users
,则Laravel
会查看电子邮件列,而不是用户名栏。