Laravel验证错误消息到字符串

Nit*_*ohn 4 php laravel-5.4

我想将laravel验证错误数组转换为逗号分隔的字符串.这是用于ios应用程序的api服务.这样iO开发人员就可以轻松处理错误消息.

我试过了,

    $valArr = [];
    foreach ($validator->errors() as $key => $value) { 
        $errStr = $key.' '.$value[0];
        array_push($valArr, $errStr);
    }
    if(!empty($valArr)){
        $errStrFinal = implode(',', $valArr);
    }
Run Code Online (Sandbox Code Playgroud)

但它没有用.

sta*_*onk 7

你应该这样做:

$errorString = implode(",",$validator->messages()->all());
Run Code Online (Sandbox Code Playgroud)

PS假设

$validator = Validator::make($dataToBeChecked,$validationArray,$messageArray)
Run Code Online (Sandbox Code Playgroud)


小智 5

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());
Run Code Online (Sandbox Code Playgroud)


ali*_*col 5

返回$validator->errors()a MessageBag,

请参阅: https: //laravel.com/api/5.3/Illuminate/Support/MessageBag.html。

你已经很接近了,你需要调用getMessages()上的函数errors(),所以:

foreach ($validator->errors()->getMessages() as $key => $value) {
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)