在PHP中向JSON添加错误标题和消息(Laravel)

前端之家收集整理的这篇文章主要介绍了在PHP中向JSON添加错误标题和消息(Laravel)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
$rules = ['email' => 'required','password' => 'required'];
        $message = ['email.required' => 'Email cannot be empty','password.required' => 'Password cannot be empty'];

        $v = Validator::make($request->all(),$rules,$message);

        $error = $v->messages();
        if ($v->fails()) {
            return response()->json(["code" => "400","error" => ["code" => "10","title"=>"","message" => $error->first()
            ]]);
        }

上面的代码将在我的JSON中返回一个错误

error : {
    code: 11
    message: "Some error message"
}

但是我会在下面添加一个标题字段.

error : {
    code: 11
    title: "Some error title"
    message: "Some error message"
}

我该怎么做这个验证?我需要.required

有人可以请一点解释一下吗?

解决方法

如果你想要这种验证错误信息格式,我认为你应该构建一些更复杂的“开箱即用”的东西.

这是您通过简单的验证测试得到的.

这是我使用的代码.

Route::get('/',function () {

    $data = ['name' => ''];
    $rules = ['name' => 'required'];

    $v = \Validator::make($data,$rules);

    dd($v->errors());

});

……这就是输出.

MessageBag {#145 ▼
  #messages: array:1 [▼
    "name" => array:1 [▼
      0 => "The name field is required."
    ]
  ]
  #format: ":message"
}

“好的,我能做什么?”

首先,一些假设.我看到你只拍了第一个错误.所以,你会得到这样的东西:

"The name field is required."

以这种方式工作,您将丢失“名称”信息.你所拥有的只是一个简单的字符串消息.考虑到你想要达到的目标,没什么大不了的.

所以,我会工作不同.有很多方法可以做我将要做的事情,我只会告诉你一个程序.

首先,让我们来看一下数组的第一个元素.

$errors = $v->errors();
$firstElement = reset($errors);

dd($firstElement);

我会得到这样的东西:

array:1 [▼
  "name" => array:1 [▼
    0 => "The name field is required."
  ]
]

现在,从这开始你可以做类似的事情

$key = key($firstElement);
$value = reset($firstElement)[0];

获得关键和价值.

最后,您应该使用它们来构建您的响应.

这是一个例子:

return response()->json(
[
    "code" => "400","error" => 
    [
        "code" => "10","title"=> "Field $key is empty.","message" => $value
    ]
]);

显然,我建议你创建一个类来实现整个机制,以便隔离职责.

希望能帮助到你.

猜你在找的Laravel相关文章