更新后的ZF2更新记录(不工作)

时间:2015-02-19 12:32:24

标签: zend-framework2

我正在尝试更新数据库中的记录。我正在读一本书,但有些东西不起作用。

这是编辑操作。在岗位表格上,行动会导致流程行动。

    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->更新,只是没有!

编辑:我可以删除用户,添加用户。

2 个答案:

答案 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 
}