/** * Create admin user form * * Method to create the Doctrine ORM user form for edit/create users * * @return Zend\Form\Form */ public function createUserForm($userEntity, $formName = 'LogIn') { $entityManager = $this->getEntityManager(); $builder = new DoctrineAnnotationBuilder($entityManager); $this->form = $builder->createForm($userEntity); $this->form->setHydrator(new DoctrineHydrator($entityManager)); $this->form->setAttribute('method', 'post'); $this->addCommonFields(); switch ($formName) { case 'SignUp': $this->addSignUpFields(); $this->addSignUpFilters(); $this->form->setAttributes(array('action' => $this->getUrlPlugin()->fromRoute('user-register'), 'name' => 'register')); break; case 'EditProfile': $this->form->setAttributes(array('action' => $this->getUrlPlugin()->fromRoute('user-register', array('action' => 'edit-profile')), 'name' => 'edit-profile')); break; case 'ChangePassword': $this->addChangePasswordFields(); $this->addChangePasswordFilters(); $this->form->setAttributes(array('action' => $this->getUrlPlugin()->fromRoute('user-register', array('action' => 'change-password')), 'name' => 'change-password')); break; case 'ResetPassword': $this->addResetPasswordFields(); $this->addResetPasswordFilters(); $this->form->setAttributes(array('action' => $this->getUrlPlugin()->fromRoute('user-register', array('action' => 'reset-password')), 'name' => 'reset-password')); break; case 'ChangeEmail': $this->addChangeEmailFields(); $this->addChangeEmailFilters(); $this->form->setAttributes(array('action' => $this->getUrlPlugin()->fromRoute('user-register', array('action' => 'change-email')), 'name' => 'change-email')); break; case 'ChangeSecurityQuestion': $this->form->setAttributes(array('action' => $this->getUrlPlugin()->fromRoute('user-register', array('action' => 'change-security-question')), 'name' => 'change-security-question')); break; case 'CreateUser': $this->addCreateUserFields(); $this->addCreateUserFilters(); $this->form->setAttributes(array('action' => $this->getUrlPlugin()->fromRoute('user-admin', array('action' => 'create-user')), 'name' => 'register')); break; case 'EditUser': $this->form->setAttributes(array('name' => 'register')); break; default: $this->addLoginFields(); $this->addLoginFilters(); $this->form->setAttributes(array('action' => $this->getUrlPlugin()->fromRoute('user-index', array('action' => 'login')), 'name' => 'login')); break; } $this->form->bind($userEntity); return $this->form; }