目前我使用它通过 ajax 显示验证错误:
            if (data.validation_failed == 1)
            {
                var arr = data.errors;
                $.each(arr, function(index, value)
                {
                    if (value.length != 0)
                    {
                        $("#validation-errors").append('<div class="alert alert-error"><strong>'+ value +'</strong><div>');
                    }
                });
                $('#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()期待一个数组而不是一个对象。