Laravel 4 - 如何将所有字段的所有验证错误消息作为JSON结构返回?

2022-08-30 21:23:50

我正在从Laravel 3升级到Laravel 4。我的应用具有一些仅 AJAX 的窗体,这些窗体在客户端呈现(即没有服务器端视图)。因此,我没有使用 withErrors() 方法将验证错误传递给视图,而是将验证错误对象作为 JSON 结构返回到客户端。

在Laravel 3中,我有这个:

$validation = Validator::make(Input::all(), $rules);
if($validation->fails())
{
  return json_encode($validation->errors);
}
//else handle task

但在Laravel 4中,错误消息受到保护:

$validation = Validator::make(Input::all(), $rules);
if($validation->fails())
{
  var_dump($validation->messages());
  return json_encode($validation->messages());
}
//else handle task

var_dump($validation->messages()))返回:

object(Illuminate\Support\MessageBag)[333]
  protected 'messages' => 
    array (size=1)
      'delete_confirm_password' => 
        array (size=1)
          0 => string 'The delete confirm password field is required.' (length=46)
  protected 'format' => string ':message' (length=8)

json_encode($validation->消息)返回

{}

问:如何在 Laravel 4 中以 JSON 结构的形式返回所有字段的所有验证错误消息?


答案 1

只需使用方法。toJson()

return $validator->messages()->toJson();

答案 2

下面是允许您将 HTTP 代码添加到响应中的另一种方法:

return Response::json($validation->messages(), 500);

推荐