/** * @param Host $entity * @param array $options * @return \Devture\Component\Form\Validator\ViolationsList */ public function validate($entity, array $options = array()) { $violations = parent::validate($entity, $options); $name = $entity->getName(); if (strlen($name) < 3 || !NameValidator::isValid($name)) { $violations->add('name', 'Invalid name.'); } else { try { $ent = $this->repository->findOneBy(array('name' => $name)); if (spl_object_hash($ent) !== spl_object_hash($entity)) { $violations->add('name', 'The name is already in use.'); } } catch (NotFound $e) { } } if ($this->isEmpty($entity->getAddress())) { $violations->add('address', 'The address cannot be empty.'); } foreach ($entity->getGroups() as $groupName) { if (!NameValidator::isValid($groupName)) { $violations->add('groups', 'The group name %name% is not valid.', array('%name%' => $groupName)); } } return $violations; }
/** * @param User $entity * @param Request $request * @param array $options */ protected function doBindRequest($entity, Request $request, array $options = array()) { parent::doBindRequest($entity, $request, $options); //To avoid having to override the user validator as well, we'll do group validation during binding. $entity->clearGroups(); foreach ((array) $request->request->get('groups') as $groupName) { if (NameValidator::isValid($groupName)) { $entity->addGroup($groupName); } else { $this->getViolations()->add('groups', 'The group name %name% is not valid.', array('%name%' => $groupName)); } } }