Laravel的AuthController无法正确验证我的字段

时间:2015-10-18 19:16:12

标签: php forms validation laravel-5 laravel-5.1

我正在Laravel 5.1中编写一个应用程序。根据文档,我可以使用他们的AuthController对我的登录表单进行身份验证和验证。

我要验证的唯一字段是code-input字段。

<form method="POST">
    <div class="form-group">
        <label for="code-input">Code</label>
        <input type="text" name="code-input" class="form-control" id="code-input" placeholder="Type your code here">
    </div>
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    <button type="submit" class="btn btn-default">Submit</button>
</form>

然而,每当我在AuthController中设置我的验证方法以仅检查该字段并提交空表单时出现错误,则需要电子邮件字段并且需要密码字段。什么是什么?

protected function validator(array $data)
{
    return Validator::make($data, [
        'code-input' => 'required|max:255'
    ]);
}

Error message

我的路线也正常运作:

Route::get('/', 'Auth\AuthController@getLogin');
Route::post('/', 'Auth\AuthController@postLogin');
Route::get('/logout', 'Auth\AuthController@getLogout');

有人知道发生了什么吗?

2 个答案:

答案 0 :(得分:1)

您是否检查了 AuthenticatesUsers.php 中的postLogin功能?它可能有一行类似的代码导致验证错误:

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

答案 1 :(得分:1)

validator方法仅用于创建用户(注册)。登录全部由AuthenticatesUsers特征postLogin方法处理,该方法需要电子邮件和密码。

有很多方法可以更改&#34;电子邮件&#34;要求很容易,但要删除这两个字段并替换为代码,您必须自己编写一个新的postLogin方法。