public static function registerValidators(Form_FormModel $form, AgaviValidationManager $vm, array $parameters, array $files = array())
 {
     $conditions = array();
     foreach ($form->getChildren() as $child) {
         if ($child instanceof Form_Elements_FieldsetModel) {
             continue;
         }
         $parents = (array) $child->parents;
         $depends = array();
         foreach ($parents as $id => $condition) {
             $depend = bin2hex("{$id}_{$condition['opration']}_{$condition['condition']}");
             $parent = $form->getChildById($id);
             if (is_null($parent)) {
                 throw new Exception("can't find parent with id={$id} for {$child->id}");
             }
             if (!isset($conditions[$depend])) {
                 $vm->createValidator('Form_ValidatorModel', array($parent->name), array(), array('model' => 'Elements.Condition', 'name' => $depend, 'module' => 'Form', 'configuration' => $condition, 'provides' => $depend, 'severity' => 'info'));
                 $conditions[$depend] = true;
             }
             $depends[] = $depend;
         }
         if (is_callable(array($child, 'registerValidators'))) {
             $child->registerValidators($vm, $depends, $parameters, $files);
         } else {
             $vm->createValidator('Form_ValidatorModel', array($child->name), array('' => 'field is required'), array('element' => $child, 'name' => $child->name, 'export' => $child->name, 'depends' => $depends, 'translation_domain' => AgaviConfig::get('Form.TranslationDomain'), 'required' => (bool) $child->required));
         }
     }
 }
Ejemplo n.º 2
0
 public function testCastOnMissingExport()
 {
     $testValues = array(array('original' => 'false', 'casted' => false), array('original' => 'true', 'casted' => true));
     foreach ($testValues as $value) {
         $validator = $this->vm->createValidator('AgaviBooleanValidator', array('bool'), array('invalid argument'));
         $rd = new AgaviRequestDataHolder(array(AgaviRequestDataHolder::SOURCE_PARAMETERS => array('bool' => $value['original'])));
         $result = $validator->execute($rd);
         $this->assertEquals(AgaviValidator::SUCCESS, $result, 'Failed asserting that the validation succeeded.');
         $this->assertSame($value['casted'], $rd->getParameter('bool'), 'Failed asserting that the validated value is casted');
     }
 }
Ejemplo n.º 3
0
 public function testMaxSuccess()
 {
     $maxError = 'value too high';
     $number = '2';
     $validator = $this->vm->createValidator('AgaviNumberValidator', array('number'), array('max' => $maxError), $parameters = array('type' => 'int', 'max' => 2));
     $rd = new AgaviRequestDataHolder(array(AgaviRequestDataHolder::SOURCE_PARAMETERS => array('number' => $number)));
     $result = $validator->execute($rd);
     $this->assertEquals(AgaviValidator::SUCCESS, $result);
     $this->assertEquals(0, $this->vm->getReport()->byErrorName('max')->count(), 'Failes asserting that there is no max error.');
     $this->assertEquals(array(), $this->vm->getReport()->getErrorMessages(), 'Failed asserting that no max error message is emittet.');
 }
Ejemplo n.º 4
0
 /**
  * @param string $content
  * @param \AgaviRequestDataHolder|array $parameters
  * @param \AgaviValidationManager $validationManager
  * @param array $config
  * @return string
  */
 protected function executeFormPopulationFilter($content, $parameters, $validationManager = null, array $config = array())
 {
     $container = $this->_context->getController()->createExecutionContainer('FilterTests', 'FormPopulationFilter');
     $container->getResponse()->setContent($content);
     if ($parameters instanceof AgaviRequestDataHolder) {
         $rd = $parameters;
     } else {
         $rd = new AgaviRequestDataHolder(array(AgaviRequestDataHolder::SOURCE_PARAMETERS => $parameters));
     }
     if ($validationManager) {
         $validationManager->execute($rd);
     }
     $fpf = new AgaviFormPopulationFilter();
     $fpf->initialize($this->_context, array_merge(array('populate' => $rd, 'validation_report' => $validationManager ? $validationManager->getReport() : null, 'force_request_uri' => '/'), $config));
     $filterChain = new AgaviFilterChain();
     $filterChain->initialize($this->_context);
     $fpf->execute($filterChain, $container);
     return $container->getResponse()->getContent();
 }