I'm upgrading from Laravel 3 to Laravel 4. My app has some AJAX-only forms that are rendered client-side (i.e. there are no server-side views). Therefore, instead of passing validation errors to views with the withErrors() method, I've been returning the validation error objects to the client as JSON structures.

在《拉威尔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()) returns:

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) returns

{}

Question:如何在Laravel 4中以JSON struct 返回所有字段的所有验证错误消息?

推荐答案

我发现使用toArray()的方法是可能的:

return json_encode($validation->messages()->toArray()); 

Laravel相关问答推荐

如何在 Laravel 中使用多对一变形关系

在 Laravel 中清除 Routes&config:cache 后未定义的常量

调用字符串上的成员函数

链接到容器时如何使用主机网络?

Laravel - 如何恢复本地存储符号链接并刷新

需要 Vagrant 环境或目标机器

Homestead:文件夹映射到错误的文档根目录

如何对模型执行删除操作?

Http请求多浏览器的烦恼

加载模型的所有关系

Laravel db 迁移 - renameColumn 错误 - 请求了未知的数据库类型枚举

Laravel 模型:模型属性在哪里?

嘲笑没有匹配的关闭处理程序

将 Laravel 集合附加到另一个集合

Laravel League/flysystem 使用 AWS S3 获取文件 URL

在 laravel 的测试套件中只运行一个单元测试

如何在 Laravel 5.2 中使用 OR 条件将多个参数传递给中间件

Laravel 部署……有标准的方式吗?

Distinct values with pluck

Laravel 5 Auth注销不起作用