3

我似乎对 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);
}

为什么这会更新我的数据库,即使它在验证时失败。尝试使用 failed() 和 pass() 方法,它们似乎在做与他们应该做的相反的事情。有任何想法吗?

4

1 回答 1

1

您是否尝试过调试输入并查看实际提交的内容?

此外,您可能需要检查auth.php以查看您是否已选择电子邮件作为您用户的用户名。这样,如果您打电话unique:users,那么Laravel将查看电子邮件列而不是用户名列

于 2012-08-12T11:30:27.180 回答