public function indexAction() { $translator = Zend_Registry::get('container')->getService('translator'); $form = $this->_helper->form('profile'); $form->setMethod('POST'); $form->setDefaults((array) $this->user->getView()); $form->username->setRequired(false); $form->removeElement('username'); $username = $this->user->getUsername(); $request = $this->getRequest(); if ($request->isPost() && $form->isValid($request->getPost())) { $values = $form->getValues(); $values['username'] = $username; try { if (!empty($values['image'])) { $imageInfo = array_pop($form->image->getFileInfo()); $values['image'] = $this->_helper->service('image')->save($imageInfo); } //TODO add event to subscribe for newsletter $this->service->save($values, $this->user); $this->_helper->flashMessenger->addMessage($translator->trans('Profile saved.', array(), 'users')); $this->_helper->redirector('index'); } catch (\InvalidArgumentException $e) { switch ($e->getMessage()) { case 'username_conflict': $form->username->addError($translator->trans("User with given username exists.")); break; default: $form->image->addError($e->getMessage()); break; } } } $this->view->user = new MetaUser($this->user); $this->view->form = $form; }