/** * Create new user * * @return \Zend\Http\Response|ViewModel */ public function registerAction() { $form = new FormUser(); $request = $this->getRequest(); if ($request->isPost()) { $form->setData($request->getPost()); if ($form->isValid()) { $service = $this->getServiceLocator()->get('User\\Service\\User'); $validator = new ObjectExists(array('object_repository' => $this->getEm()->getRepository('User\\Entity\\User'), 'fields' => array('email'))); if ($validator->isValid(array('email' => $request->getPost()->toArray()))) { $this->flashMessenger()->addErrorMessage('Email Já cadastrado em nosso sistemas!'); if ($this->flashMessenger()->hasErrorMessages()) { return new ViewModel(['form' => $form, 'error' => $this->flashMessenger()->getErrorMessages()]); } return new ViewModel(['form' => $form, 'error' => $this->flashMessenger()->getErrorMessages()]); } if ($service->insert($request->getPost()->toArray())) { $this->flashMessenger()->addSuccessMessage('Usuário cadastrado com sucesso! Eviamos uma ativação para seu email!!!'); } else { $this->flashMessenger()->addErrorMessage('Erro ao fazer o cadastro!!!'); } return $this->redirect()->toRoute('user-register', ['controller' => 'User\\Controller\\Index']); } } if ($this->flashMessenger()->hasSuccessMessages()) { return new ViewModel(['form' => $form, 'success' => $this->flashMessenger()->getSuccessMessages()]); } if ($this->flashMessenger()->hasErrorMessages()) { return new ViewModel(['form' => $form, 'error' => $this->flashMessenger()->getErrorMessages()]); } return new ViewModel(['form' => $form]); }
/** * @return $this */ protected function emailExist() { $recordExistsValidator = new ObjectExists(array('object_repository' => $this->sm->get('Doctrine\\ORM\\EntityManager')->getRepository('User\\Entity\\User'), 'fields' => 'email')); $recordExistsValidator->setMessage('User with this email are not exists', ObjectExists::ERROR_NO_OBJECT_FOUND); $this->add(array('name' => 'email', 'required' => true, 'validators' => array(array('name' => 'EmailAddress'), $recordExistsValidator), 'filters' => array(array('name' => 'StripTags'), array('name' => 'StringTrim')))); return $this; }
/** * Forgot form factory * * @param ServiceLocatorInterface $serviceLocator * @return ForgotForm */ public function createService(ServiceLocatorInterface $serviceLocator) { $entityManager = $serviceLocator->get('Doctrine\\ORM\\EntityManager'); $options = $serviceLocator->get('User\\Password\\Options'); $zfcUserOptions = $serviceLocator->get('zfcuser_module_options'); $validator = new ObjectExists(['object_repository' => $entityManager->getRepository($zfcUserOptions->getUserEntityClass()), 'fields' => 'email']); $validator->setMessage('The email address you entered was not found.'); $form = new ForgotForm(null); $form->setInputFilter(new ForgotFormFilter($validator, $options)); return $form; }
/** * {@inheritDoc} */ public function isValid($value) { $value = null === $value ? [null] : (array) $value; $valueCount = count($value); $fieldsCount = count($this->fields); if ($valueCount === 1 && $fieldsCount === 1 || $valueCount !== 1 && $fieldsCount !== 1 && $valueCount !== $fieldsCount) { return parent::isValid($value); } if ($valueCount > $fieldsCount) { $field = reset($this->fields); $match = $this->objectRepository->findOneBy([$field => $value]); } else { if ($valueCount < $fieldsCount) { $value = array_fill(0, $fieldsCount, array_shift($value)); } $value = $this->cleanSearchValue($value); $qb = $this->objectRepository->createQueryBuilder('o'); $orX = $qb->expr()->orX(); foreach ($this->fields as $key => $field) { $orX->add("o.{$field} = ?{$key}"); $qb->setParameter($key, array_shift($value)); } $className = $this->objectRepository->getClassName(); $object = new $className(); $meta = $qb->getObjectManager()->getClassMetadata($className); $identifier = $meta->getSingleIdentifierFieldName(); $match = $qb->select("count(o.{$identifier})")->where($orX)->getQuery()->getSingleScalarResult(); } if ($match) { return true; } $this->error(self::ERROR_NO_OBJECT_FOUND, $value); return false; }
public function getInputFilter() { if ($this->filter == null) { $this->filter = new InputFilter(); $inputFilter = parent::getInputFilter(); $email = new Input('email'); $email->setRequired(true); $email->setAllowEmpty(false); $objectExists = new ObjectExists(array('object_repository' => $this->objectManager->getRepository(User::getClass()), 'fields' => 'email')); $objectExists->setMessage($this->translator->translate('forgotPassword.email.notExists'), ObjectExists::ERROR_NO_OBJECT_FOUND); $emailAddress = new EmailAddress(); $emailAddress->setMessage($this->translator->translate('forgotPassword.email.invalidFormat'), $emailAddress::INVALID_FORMAT); $email->getValidatorChain()->attach($emailAddress, true)->attach($objectExists); $this->filter->add($email); } return $this->filter; }
public function __construct(array $options) { parent::__construct($options); if (!isset($options['object_manager']) || !$options['object_manager'] instanceof ObjectManager) { if (!array_key_exists('object_manager', $options)) { $provided = 'nothing'; } else { if (is_object($options['object_manager'])) { $provided = get_class($options['object_manager']); } else { $provided = getType($options['object_manager']); } } throw new Exception\InvalidArgumentException(sprintf('Option "object_manager" is required and must be an instance of' . ' Doctrine\\Common\\Persistence\\ObjectManager, %s given', $provided)); } $this->objectManager = $options['object_manager']; }
public function testWillNotValidateOnFieldKeysMismatch() { $this->setExpectedException('Zend\\Validator\\Exception\\RuntimeException', 'Field "field2" was not provided, but was expected since the configured field lists needs it for validation'); $validator = new ObjectExists(array('object_repository' => $this->getMock('Doctrine\\Common\\Persistence\\ObjectRepository'), 'fields' => array('field1', 'field2'))); $validator->isValid(array('field1' => 'field1Value')); }
public function testErrorMessageIsStringInsteadArray() { $repository = $this->getMock('Doctrine\\Common\\Persistence\\ObjectRepository'); $validator = new ObjectExists(array('object_repository' => $this->getMock('Doctrine\\Common\\Persistence\\ObjectRepository'), 'fields' => 'field')); $this->assertFalse($validator->isValid('value')); $messageTemplates = $validator->getMessageTemplates(); $expectedMessage = str_replace('%value%', 'value', $messageTemplates[ObjectExists::ERROR_NO_OBJECT_FOUND]); $messages = $validator->getMessages(); $receivedMessage = $messages[ObjectExists::ERROR_NO_OBJECT_FOUND]; $this->assertTrue($expectedMessage == $receivedMessage); }