gpt4 book ai didi

php - AJAX 模式下的验证错误

转载 作者:IT王子 更新时间:2023-10-28 23:50:29 24 4
gpt4 key购买 nike

目前我使用它通过 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() 需要一个数组而不是一个对象。

最佳答案

最简单的方法是利用验证器的 MessageBag 对象。可以这样做:

// Setup the validator
$rules = array('username' => 'required|email', 'password' => 'required');
$validator = Validator::make(Input::all(), $rules);

// Validate the input and return correct response
if ($validator->fails())
{
return Response::json(array(
'success' => false,
'errors' => $validator->getMessageBag()->toArray()

), 400); // 400 being the HTTP code for an invalid request.
}
return Response::json(array('success' => true), 200);

这会给你一个像这样的 JSON 响应:

{
"success": false,
"errors": {
"username": [
"The username field is required."
],
"password": [
"The password field is required."
]
}
}

关于php - AJAX 模式下的验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com