方法[validateUserName]不存在(Laravel 5)

时间:2015-12-28 04:25:36

标签: laravel laravel-5

我的代码是这样的:

public function postLogin(Request $request)
    {
        $this->validate($request, [
            'user_name' => 'required|user_name', 'password' => 'required',
        ]);

        $credentials = $request->only('user_name', 'password');

        if ($this->auth->attempt($credentials, $request->has('remember')))
        {
            return redirect($this->redirectPath());
        }

        return redirect($this->loginPath())
                    ->withInput($request->only('user_name', 'remember'))
                    ->withErrors([
                        'user_name' => $this->getFailedLoginMessage(),
                    ]);
    }

当我点击按钮登录时,会出现错误消息:

BadMethodCallException in Validator.php line 2615: Method [validateUserName] does not exist.

谢谢

2 个答案:

答案 0 :(得分:3)

我认为你想要实现的是这个

$this->validate($request, [
            'user_name' => 'required',
            'password' => 'required',
        ]);

编辑:所以您尝试使用用户名/密码组合而不是电子邮件/密码组合进行登录?

将此添加到您的Controller / Auth / AuthController.php

protected $username = 'user_name';

但您必须将postLogin方法切换回

        $this->validate($request, [
            $this->loginUsername() => 'required', 'password' => 'required',
        ]);

答案 1 :(得分:0)

没有验证规则user_name

除非你扩展验证器并自己添加验证器,否则它不存在。

可用规则如下:

Laravel 5.0 Docs - Validation - Available Rules

email适用于您的规则,因为email是您可以使用的可用验证规则。