我正在尝试将验证错误返回到角度,但我无法弄清楚如何在格式数组中返回它们('字段在验证' =>'错误消息& #39)。这个确切的数组保存在errors-> messages()中,但它是受保护的属性。
这是我的代码
validator.php
<?php namespace TrainerCompare\Services\Validation;
use Validator as V;
/**
*
*/
abstract class Validator
{
protected $errors;
public function validate($data)
{
$validator = V::make($data, static::$rules);
if ($validator->fails()) {
$this->errors = $validator->messages();
return false;
}
return true;
}
public function errors()
{
return $this->errors;
}
}
控制器
<?php
use TrainerCompare\Services\Validation\ProgramValidator;
class ProgramsController extends BaseController
{
protected $program;
protected $validator;
public function __construct(Program $program, ProgramValidator $validator)
{
$this->program = $program;
$this->validator = $validator;
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
$input = Input::all();
$v = $this->validator->validate($input);
if ($v == true) {
//$this->program->create($input);
return Response::json(
array('success' => true)
);
} else {
$errors = $this->validator->errors();
return Response::json(
array('errors' => $errors)
);
}
}
}
这将返回json
{"errors":{}}
如果我将控制器更改为
$errors = $this->calidator->errors()->all();
返回
{"errors":["The title field is required.","The focus field is required.","The desc field is required."]}
我真正想要的是
{"errors":[title: "The title field is required.",focus: "The focus field is required.",desc: "The desc field is required."]}
答案 0 :(得分:1)
Laravel中的Validator错误返回一个MessageBag
对象,它有许多你可能想要查看的有用方法。
听起来你想要的是toArray
方法,你可以在你的控制器中使用它。
替换控制器中的以下代码;
$errors = $this->validator->errors();
return Response::json(
array('errors' => $errors)
);
使用;
$errors = $this->validator->errors()->toArray();
return Response::json(
array('errors' => $errors)
);
或者,根据您如何使用Angular,您可以使用toJson
方法直接返回对象。
return $this->validator->errors()->toJson();