如何在Doctrine + ZF2中保存除一个字段外的所有字段?

时间:2013-10-15 17:02:36

标签: doctrine-orm zend-framework2

我有一个用户实体,在编辑操作中,我提供了一个用于编辑用户的表单。我想要一个密码字段。如果密码为空,那么我想更新除密码以外的所有字段,如果输入了某些内容,则会更新所有字段。

这是我的控制器动作。

public function editUserAction() {
    $id = (int) $this->params()->fromRoute('id', 0);
    if (!id) return $this->redirect()->toRoute('index', array('action' => 'users));
    $objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
    $form = new UserForm($objectManager);
    $user = $objectManager->find('Application\Entity\User', $id);
    $form->bind($user);
    if ($this->request->isPost()) {
        $form->setData($this->request->getPost());
        if ($form->isValid()) {
            $data = $this->request->getPost();
            if ($data->user['password'] == '') {
                // how to save all but one field
            }
            else {
                $objectManager->persist($user);
                $objectManager->flush();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

使用删除方法:

供应商/ zendframework / zendframework /库/ Zend的/窗体/ Fieldset.php 删除删除命名的元素或字段集 参数: 串 $ elementOrFieldset 找不到PHPDoc 返回: 类型: FieldsetInterface

if ($data->user['password'] == '') 
{

        $form->remove('password');
        $objectManager->persist($user);
        $objectManager->flush();
}