0

是这样的, 我在写登录验证的时候遇到了一个这样的问题。
图片描述
我在store方法中进行了登录验证。
其中 StoreLoginPost类主要是进行了各种表单验证,

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreLoginPost extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * 验证规则
     *
     * @return array
     */
    public function rules()
    {
        return [
            'account' => 'required',
            'password' => 'required|min:6',
        ];
    }

    /**
     * 提示消息处理
     *
     * @return array
     */
    public function messages()
    {
        return [
            'account.required' => '用户名不能为空',
            'password.required' => '密码不能为空',
            'password.min' => '密码不能少于六位',
        ];
    }
}

当表单提交的时候,如果不符合我要求的规则会返回一个Illuminate\Support\MessageBag $errors对象,

图片描述
而我则从$errors对象中获取错误信息以提示用户表单的不符合规则,
这是表单验证错误的,


如果数据库中查询不到用户,如图一中红色框出来的部分,我应该怎么优雅的处理这个错误,难道只能用flash session?
闪存固好,但是我觉得有一些别扭, 正如图二的三个箭头示意,错误既存在$errors中也存在session中,是否能统一的处理, 或者有更好的处理方法, 望指教。

2017-10-04 提问
1 个回答
0
  1. 可以在FormRequest这个子类里面添加rule, 就是判断密码对不对的.

    如果这样, 那接收到这个$request时, 可以确定用户名密码验证成功了.
    如果验证失败, 由验证框架返回到上一步.
    
  2. 使用 ->withErrors(['msg' => '验证失败']), 可以在模板里统一使用$errors变量.

    其实这个本质上还是->flash().

撰写答案

推广链接