循环遍历错误消息包然后创建一个新数组

时间:2016-06-19 10:55:36

标签: php laravel laravel-5.2

我试图遍历错误消息包($ validator-> errors() - > getMessages())数组并将其对象推送到另一个数组($ error)

$error = array();
$validator = Validator::make($request->all(),[
    'username' => 'required|unique:User',
    'password' => 'required',
    'fullname' => 'required|unique:Profile',
    'email' => 'required|email|unique:Profile'
]);

if($validator->fails()) :
    foreach($validator->errors()->getMessages() as $m => $key):
        array_push($error,$key);
    endforeach;
endif;

然后循环到新数组($ error)并在新数组对象上创建一个字符串($ str)

$str = '<ul class="c_red padding_zero margin_zero menu">';
foreach($error as $e ){ // this is the line 113
    $str.= '<li>'.$e.'</li>';
}
$str.='</ul>';

return array('success' => false,  'message' => $error );

但是它返回了一个错误

  

数组到字符串转换第113行

这里是不循环到$ error数组以创建$ str string

时的响应
  

{&#34;成功&#34;:false,&#34;消息&#34;:[[&#34;用户名字段是必需的。&#34;],[&#34;密码&gt ;字段是必需的。&#34;],[&#34;全名字段是必需的。&#34;],[&#34;电子邮件字段是&gt; 。需要&#34;]]}

1 个答案:

答案 0 :(得分:3)

错误中的每个键可能包含多个错误,因此它将是一个字符串...

所以你可以这样做:

if($validator->fails()) :
    foreach($validator->errors()->getMessages() as $validationErrors):
        if (is_array($validationErrors)) {
            foreach($validationErrors as $validationError):
                $error[] = $validationError;
            endforeach;
        } else {
            $error[] = $validationErrors;
        }
    endforeach;
endif;

在这里,您将获得所有错误消息的数组...