我使用prepare方法和validate方法设置了我的模型。 prepare方法使用给定数组更新所有模型属性,并返回返回Validator :: make ($this->toArray(), array(rules))
的validate方法;所以像这样:
Model extends Eloquent{
public function prepare($newValues){
$this->value1 = $newValue['value1'];
// etc....
return $this->validate();
}
public function validate(){
$v = Validator::make($this->toArray(), array(
'value1' => 'required',
//etc..
)
);
return $v;
}
}
在我的控制器中,我创建了一个空白错误对象,检查模型是否有效,如果没有将$errors->errors
属性设置为true并将$errors->messages
设置为验证器messages()对象,就像这样:
Controller extends BaseController{
public function update(){
$newValues = Input::json('newValues');
$model = Model::find($newValues['id']);
$modelV = $model->prepare($newValues);
$errors = new stdClass();
if($modelV->fails()){
$errors->errors = true;
$errors->messages = $modelV->messages();
return Response::json($errors);
}else{
$model->save();
return $model;
}
}
我将数据返回到使用Angular的前端。当我console.log(theReturn)
时,我使用errors=true
获取对象,但messages属性是一个空白对象。奇怪的部分是如果我单独返回$modelV->messages()
它正确显示(例如{'value1':['value1 is required']}
)。我很想说这是一个错误,但我真的不知道发生了什么。只有当我将$modelV->messages()
分配给另一个对象属性时,它才会变为空白。我将在同一时间使用一种解决方法,但我想知道是否有人能看到我做错了什么,或者自己经历过这种情况。
答案 0 :(得分:0)
我的解决方案是使用$ validator-> messages() - > toArray()