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 構造として返すにはどうすればよいですか?