我使用CakePHP _serialize函数来响应API响应。
如果在模型上有一些验证错误,则返回消息,该消息描述JSON输出中的错误。
代码是这样的:
$status = 'NOK';
$errors = $this->User->validationErrors;
// SET RESPONSE TO OUTPUT
$this->set(array(
'status' => $status,
'message' => $errors,
'_serialize' => array('status','message')
));
它生成此JSON:
{
"status": "NOK",
"message": {
"email": [
"Email already exists"
],
"username": [
"Username already exists"
]
}
}
问题是,消息应该是带有错误字符串的简单数组(因为用户无法通过键名访问错误),这意味着,如下所示:
{
"status": "NOK",
"message": [
"Email already exists",
"Username already exists"
]
}
问题是:
如何在CakePHP或纯PHP中简单解决这个问题?
感谢您提供任何帮助或建议。
答案 0 :(得分:1)
使用array_values
:
$this->set(array(
'status' => $status,
'message' => array_values($errors),
'_serialize' => array('status','message')
));
答案 1 :(得分:0)
尝试使用Hash::extract
$errors = Hash::extract($this->User->validationErrors, '{s}.{n}');
提供以下JSON:
["Email already exists", "Username already exists"]