【问题标题】:best way to handle errors in laravel在 laravel 中处理错误的最佳方法
【发布时间】:2014-09-10 12:45:51
【问题描述】:

我有点卡住了,我有一个小表单和身份验证系统 - Sentry。

1) 从 Input 中获取数据并验证它。 没关系,我明白了,检查规则,设置messageBag

<?php
     $validation->getMessageBag()->setFormat(Config::get('project/config.errors_delimiters'));
?>

然后我返回页面withErrors 方法。并打印validation 错误。

2) 例如,下一步将是登录用户。这意味着,我需要使用哨兵manual

但现在我有一个问题:如何显示错误或存储错误。 我有:

  • 通过验证的错误消息
  • 通过 Sentry 的错误消息
  • 自定义错误
  • 成功消息
  • 信息消息

存储此消息的最佳做法是什么?如何将其发送到视图?以及如何在视图中解析它?另外如何设置分隔符样式?

当然,我可以创建大量闪存、会话和其他类型的数据,然后将其发送到视图中,但我认为这很荒谬。我认为有一个简单的方法可以帮助我。

【问题讨论】:

    标签: php laravel cartalyst-sentry


    【解决方案1】:

    非常好的问题。这就是我的处理方式。

    因为验证错误使用MessageBag,所以我做的是

    $messages = new MessageBag;
    

    如果你遇到任何错误,你可以这样做

    try {
        ...
    } catch (Exception $e) {
        $messages->add("error", $e->getMessage());
    }
    

    如果你有其他错误返回,你可以合并它

    $messages->merge($other_messages)
    

    其中包括验证消息 $validation->messages()。

    因为messagebag接受key,所以可以通过$messages-&gt;add('info', 'ok')添加其他类型

    然后在您的模板或控制器中,您可以通过

    获取该类型的消息
    $messages->get('error')
    

    在你检查之后

    $messages->has('error')
    

    【讨论】:

    • 是的,我没有停止对这个问题的研究。我在 API 文档中找到了它。现在我还有另一个问题。这里有三个错误:[错误:“您的密码错误”-> 验证]、[警告:“登录限制”-> my_app]、[信息:“我是猫”->my_app]。你知道 bootstraps divs:
      :message
      ,但是如果我将错误合并到一个包中,我只能显示一种类型的错误。我想创建一个助手,它将像这样工作:获取“错误|消息”,解析这个字符串并输出带有样式的正确字符串。或者也许我应该使用 flashdata?无论如何,我需要深入。
    猜你喜欢
    • 1970-01-01
    • 2017-09-13
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    相关资源
    最近更新 更多