2016-04-08 3 views
0

Я, вероятно, слишком усложняю вещи, где это не нужно, но у меня есть форма, которая отправляется через AJAX и затем проверяется. Я пытаюсь вернуть первую ошибку, которая возникает, но я могу только когда-либо получить validation.required, который, конечно, бесполезен для меня; Я не могу сообщить пользователю, какое поле не удалось, и я не могу перевести соответствующее сообщение об ошибке.Проверка - возврат первой ошибки для ответа AJAX

Что дает? Как я могу получить сообщение об ошибке для человека и вернуть его как ответ JSON?

Вот что у меня так далеко ... Самое большое, как-сделай я это извлечение имени атрибута для сообщения об ошибке, но, возможно, есть гораздо более простой способ справиться с этим вообще ...

/** 
* Adds a new post to the system 
* 
* @param Request $request 
* @return json 
*/ 
public function store(Request $request) 
{ 
    // run validation 
    if(!empty($validator = $this->validate($request))) 
    { 
     return response()->json(trans('global/'.$validator->first(), ['attribute' => 'how to get attribute?!?!']), 400); 
    } 

    // some other logic... 
} 


/** 
* Validates a post add or post update request 
* 
* @access private 
* @param Request $request 
* @return mixed 
*/ 
private function validate(Request $request) 
{ 
    // set-up validation rules 
    $validator = Validator::make($request->all(), [ 
     'username'  => 'max:255|required', 
     'email'   => 'email', 
     'service'  => 'numeric|required', 
    ]); 

    $validator->setAttributeNames([ 
     'username'  => "Username", 
     'service'  => "Service", 
    ]); 

    // run validation 
    if($validator->fails()) 
    { 
     return $validator->errors(); 
    } 

    return true; 
} 

ответ

0

Используйте код выше в методе контроллера store и не отменяют validate метод:

$rules  = [ 
     'username' => 'max:255|required', 
     'email' => 'email', 
     'service' => 'numeric|required', 
    ]; 
    $attributes = [ 
     'username' => "Username", 
     'service' => "Service", 
    ]; 
    $this->validate($request, $rules, [], $attributes); 

Он автоматически возвращает ошибки, если проверка JSON не удается.
Примеры ошибок:

{"username":["The Username field is required."],"service":["The Service field is required."]} 
Смежные вопросы