Laravel中如何优雅的处理错误?

发布于 2022-09-06 00:03:16 字数 1539 浏览 27 评论 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中,是否能统一的处理, 或者有更好的处理方法, 望指教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情域 2022-09-13 00:03:16
  1. 可以在FormRequest这个子类里面添加rule, 就是判断密码对不对的.

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

    其实这个本质上还是->flash().
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文