예제 #1
0
 /**
  * @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;
 }
예제 #2
0
 /**
  * @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));
         }
     }
 }