【发布时间】:2013-10-25 16:18:49
【问题描述】:
我正在从 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->messages) 返回
{}
问题:如何在 Laravel 4 中将所有字段的所有验证错误消息作为 JSON 结构返回?
【问题讨论】:
-
在编码之前你有没有尝试过将类型转换为数组?不确定它是否有效但值得一试:
$messages = (array)$validation->messages; return json_encode($messages); -
@FDL - 谢谢。您的评论让我找到了一个可行的答案(messageBag 类有一个 toArray() 方法。