我正在尝试更新数据库中的记录。我正在读一本书,但有些东西不起作用。
这是编辑操作。在岗位表格上,行动会导致流程行动。
public function editAction()
{
$userTable = $this->getServiceLocator()->get('UserTable');
$user = $userTable->getUser($this->params()->fromRoute('id'));
$form = $this->getServiceLocator()->get('UserEditForm');
$form->bind($user);
$viewModel = new ViewModel(array(
'form' => $form,
'user_id' => $this->params()->fromRoute('id')
));
return $viewModel;
}
流程操作
public function processAction()
{
// Get User ID from POST
$post = $this->request->getPost();
$userTable = $this->getServiceLocator()->get('UserTable');
// Load User entity
$user = $userTable->getUser($post->id);
// Bind User entity to Form
$form = $this->getServiceLocator()->get('UserEditForm');
$form->bind($user);
$form->setData($post);
// Save user
$this->getServiceLocator()->get('UserTable')->saveUser($user);
}
这是具有功能保存用户的类UserTable:
public function saveUser(User $user)
{
$data = array(
'email' => $user->email,
'name' => $user->name,
'password' => $user->password,
);
$id = (int)$user->id;
if ($id == 0) {
$this->tableGateway->insert($data);
} else {
if ($this->getUser($id)) {
$this->tableGateway->update($data, array('id' => $id));
} else {
throw new \Exception('User ID does not exist');
}
}
}
没有错误显示。它传递了$ this-> tableGateway->更新,只是没有!
编辑:我可以删除用户,添加用户。
答案 0 :(得分:1)
你想念这个
if ($form->isValid()) {
$this->getServiceLocator()->get('UserTable')->saveUser($form->getData());
}
验证后,您现在可以使用$ form-> getData()检索验证表单数据。 另请注意,由于绑定实体通过$ form->绑定($ user)$ form-> getData()是用户的实例 希望它有所帮助;)
答案 1 :(得分:0)
我不知道为什么,但我必须检查表格是否有效。
if($form->isValid()){
// do the save
}