Я хочу преобразовать массив ошибок проверки laravel в строку, разделенную запятой. Это должно использоваться в службе api для приложения ios. Чтобы разработчик iOs мог легко обрабатывать сообщения об ошибках.
Я пытался,
$valArr = []; foreach ($validator->errors() as $key => $value) { $errStr = $key.' '.$value[0]; array_push($valArr, $errStr); } if(!empty($valArr)){ $errStrFinal = implode(',', $valArr); }
Но это не работает.
You are not converting validation errors to array.Please use the below function and pass validation errors as parameter. public function validationErrorsToString($errArray) { $valArr = array(); foreach ($errArray->toArray() as $key => $value) { $errStr = $key.' '.$value[0]; array_push($valArr, $errStr); } if(!empty($valArr)){ $errStrFinal = implode(',', $valArr); } return $errStrFinal; } //Function call. $result = $this->validationErrorsToString($validator->errors());
Вы должны сделать так:
$errorString = implode(",",$validator->messages()->all());
PS Предполагая
$validator = Validator::make($dataToBeChecked,$validationArray,$messageArray)
$validator->errors()
возвращает MessageBag
,
см. https://laravel.com/api/5.3/Illuminate/Support/MessageBag.html .
Вы близки, вам нужно вызвать функцию getMessages()
на errors()
, чтобы:
foreach ($validator->errors()->getMessages() as $key => $value) {
Надеюсь это поможет 🙂