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

在PHP(Laravel)中向JSON添加错误标题和消息,php,web-services,laravel,laravel-5,laravel-5.1,Php,Web Services,Laravel,Laravel 5,Laravel 5.1,上面的代码将在我的JSON中返回一个错误块 $rules = ['email' => 'required', 'password' => 'required']; $message = ['email.required' => 'Email cannot be empty', 'password.required' => 'Password cannot be empty']; $v = Validator::make($request-

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

$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()
            ]]);
        }
不过,我会添加一个标题字段,如下所示

error : {
    code: 11
    message: "Some error message"
}
我应该如何进行此验证?我需要
.required


谁能解释一下吗

如果您想要这种验证错误消息格式,我认为您应该构建一种更为“复杂”的东西,它实际上是现成的

下面是一个简单的验证测试

这是我使用的代码

error : {
    code: 11
    title: "Some error title"
    message: "Some error message"
}
。。。这就是输出

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"
}
$errors = $v->errors();
$firstElement = reset($errors);

dd($firstElement);
这样做会丢失“名称”信息。您所拥有的只是一条简单的字符串消息。考虑到你想要实现的目标,这没什么大不了的

所以,我会做不同的工作。我将要做的事情有很多种方法,我将向你们展示一个过程

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

"The name field is required."
我会得到这样的东西:

MessageBag {#145 ▼
  #messages: array:1 [▼
    "name" => array:1 [▼
      0 => "The name field is required."
    ]
  ]
  #format: ":message"
}
$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];
显然,我建议您创建一个类来实现整个机制,以便隔离责任


希望有帮助。

是的,因为你的标题为空。你想成为什么标题?我想要类似的。例如:如果电子邮件是空的。我希望标题为“Email is Empty”,消息为“Please fill your Email”,您可以试试这个
return response()->json([“code”=>“400”,“error”=>[“code”=>“10”,“title”=>$message”,“message”=>$rules]])它不起作用@奥尔德林27