public function formAddSubmitted(\Nette\Application\UI\Form $form) { $values = $form->values; try { $userRole = $this->em->getRepository('UserRole')->find($values->role); $values->role = $userRole; $user = new \Entity\User(); $user->setValues((array) $values); $this->em->persist($user); $token = new \Entity\PasswordRecoveryToken(); $token->setUser($user); $this->em->persist($token); $this->em->flush(); $this->mailBuilder->buildAccountCreatedEmail($user, $token)->send(); $this->flash(sprintf('User %s added', $user->name)); $this->invalidateControl('grid'); $this->popupOff(); } catch (\PDOException $e) { switch ($e->getCode()) { case '23000': $message = 'Duplicate data'; break; } $form->addError($message); $this->invalidateControl('form'); } }