0

User エンティティがあり、編集アクションでユーザーを編集するためのフォームを提示します。パスワードフィールドを利用できるようにしたいと思います。パスワードが空白の場合、パスワード以外のすべてのフィールドを更新したいと思います。何かを入力すると、すべてのフィールドが更新されます。

これが私のコントローラーアクションです。

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();
            }
        }
    }
}
4

1 に答える 1

0

remove メソッドを使用します。

vendor/zendframework/zendframework/library/Zend/Form/Fieldset.php remove 名前付き要素またはフィールドセットを削除します パラメータ: string $elementOrFieldset PHPDoc が見つかりません 戻り値: タイプ: FieldsetInterface

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

        $form->remove('password');
        $objectManager->persist($user);
        $objectManager->flush();
}
于 2013-10-16T13:20:11.473 に答える