目前我用这个来通过ajax显示验证错误:
if (data.validation_failed == 1)
{
var arr = data.errors;
$.each(arr, function(index, value)
{
if (value.length != 0)
{
$("#validation-errors").append('
}
});
$('#ajax-loading').hide();
$("#validation-errors").show();
}
它工作正常,完全是我需要的。
问题是我需要做的是将错误从laravel运送到ajax:
$rules = array(
'name' => 'required',
'password' => 'required'
);
$v = Validator::make(Input::all(), $rules);
if ( ! $v->passes())
{
$messages = $v->messages();
foreach ($rules as $key => $value)
{
$verrors[$key] = $messages->first($key);
}
if(Request::ajax())
{
$response_values = array(
'validation_failed' => 1,
'errors' => $verrors);
return Response::json($response_values);
}
else
{
return Redirect::to('login')
->with('validation_failed', 1)
->withErrors($v);
}
}
如果我想要将字段名称作为关键字,我必须迭代$ rules,但即使我不使用字段名称作为关键字,但是我必须迭代错误消息来构造$ verrors。
如何将$ v-> messages()转换为相当于$ verrors而不需要迭代?因为Response :: json()期待一个数组而不是一个对象。