您好我正在尝试通过个人资料部分中的id
更新单个用户。如果没有验证错误,这可以正常工作,但是如果我删除用户名,我会抛出一个错误,如下所示:
Serialization of 'Closure' is not allowed
除了我期望的验证错误消息,任何人都可以建议这意味着什么以及如何解决这个问题?我正在使用自定义存储库来处理数据库交互。我的配置文件控制器具有此功能:
public function updateProfileuser($id)
{
$updateprofileuser = $this->profile->findUserbyid($id);
if($updateprofileuser)
{
$updateprofileuser = $this->profile->updateProfile($id, Input::all() );
return Redirect::to('/profile')->with('success', 'Updated Profile');
} elseif(!$updateprofileuser)
{
return Redirect::back()->withInput()->withErrors($this->profile->errors);
}
}
我的repo中的updateProfile()函数如下:
public function updateProfile($id) {
$rules = array(
'username' => 'required',
'email' => 'required'
);
$validator = \Validator::make(\Input::all(), $rules);
if($validator->fails() ) {
$this->errors = \Session::flash('errors', $validator);
} else {
$user = \User::find($id);
$user->firstname = \Input::get('firstname');
$user->lastname = \Input::get('lastname');
$user->username = \Input::get('username');
$user->email = \Input::get('email');
$user->save();
}
}
我的回购中的错误功能如下:
public function errors()
{
return $this->errors;
}
和我的repo界面
public function updateProfile($id);
public function errors();
我在传回错误消息时出错了吗?
答案 0 :(得分:1)
问题在于:
$this->errors = \Session::flash('errors', $validator);
您正在尝试将$ validator对象序列化到Flash会话中,
所以只需将其更改为:
$this->errors = $validator;
虽然我建议你修改你的代码,但我对你要完成的工作有点困惑所以这只是一个建议。
您的updateProfileuser函数:
public function updateProfileuser($id)
{
$updateprofileuser = $this->profile->findUserbyid($id);
if($updateprofileuser)
{
$rules = array(
'username' => 'required',
'email' => 'required'
);
$validator = \Validator::make(\Input::all(), $rules);
if($validator->fails()){
return Redirect::back()->withInput()->withErrors($validator);
}else{
$this->profile->updateProfile($id);
return Redirect::to('/profile')->with('success', 'Updated Profile');
}
} else{
//I don't know what you expect to pass here when $this->profile->findUserbyid($id) doesn't find anything
$this->profile->errors = 'Id not found';
return Redirect::back()->withInput()->withErrors($this->profile->errors);
}
}
你的updateProfile函数:
public function updateProfile($id) {
$user = \User::find($id);
$user->firstname = \Input::get('firstname');
$user->lastname = \Input::get('lastname');
$user->username = \Input::get('username');
$user->email = \Input::get('email');
$user->save();
}