【问题标题】:lumen laravel: How to return the message of the first error?lumen laravel:如何返回第一个错误的消息?
【发布时间】:2023-04-09 13:02:01
【问题描述】:

我需要在 Lumen 中自定义验证响应,如下所示

{
    "result": null,
    "count": 0,
    "statusCode": -1,
    "statusMessage": "...."
}

如您所见,无论发生多少错误,都必须显示一条状态消息。为此,我在基本控制器中添加了以下功能

protected function buildFailedValidationResponse(Request $request, array $errors)
{
    $string = null;

    foreach ($errors as $error)
    {
        $string = $error[0];
        break;
    }

    return [
        "result" => null,
        "count" => 0,
        "statusCode" => -1,
        "statusMessage" => $string
    ];
}

这是dd($errors)的结果

array:2 [
    "user_id" => array:1 [
        0 => "The user id field is required."
    ]
    "asd" => array:1 [
        0 => "The asd field is required."
    ]
]

它有效,但看起来很乱!如何返回第一个错误的消息?

【问题讨论】:

  • 试试 $errors[0][0]
  • $erros['user_id'] 存在但未找到 $errors[0]
  • errors 对象有自己的$errors->first(),因为它是一个集合。

标签: laravel lumen


【解决方案1】:

如果你的数组是这样的:

$array = [
    "user_id"=> [
        0 => "sssss"
    ],
    "asd"=> [
        0 => "ttttt"
    ]
];

这会帮助你:

return reset($array)[0];

结果:sssss

【讨论】:

    【解决方案2】:

    利用集合。如果$errors 已经是一个集合(肯定是ErrorBag),您可以将它作为数组错误,然后flatten 它们。

    $errors = collect($errors);
    
    $string = $errors->flatten()->first();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-23
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 2021-05-27
      相关资源
      最近更新 更多