예제 #1
0
 /**
  * {@inheritdoc}
  */
 public function beforeValidate(Model $Model, $options = array())
 {
     $ModelValidator = $Model->validator();
     foreach ($Model->data[$Model->alias] as $field => $value) {
         if (!preg_match('/^([a-z0-9_]+)_confirm$/i', $field, $match)) {
             continue;
         }
         if (!array_key_exists($match[1], $Model->data[$Model->alias])) {
             continue;
         }
         if (!($Ruleset = $ModelValidator->getField($match[1]))) {
             $Ruleset = new CakeValidationSet($match[1], array());
         }
         $ruleset = array();
         foreach ($Ruleset->getRules() as $name => $Rule) {
             $ruleset[$name] = (array) $Rule;
             foreach (array_keys($ruleset[$name]) as $key) {
                 if (!preg_match('/^[a-z]/i', $key)) {
                     unset($ruleset[$name][$key]);
                 }
             }
         }
         $ModelValidator->add($field, new CakeValidationSet($field, array()));
         $ModelValidator->getField($field)->setRule('confirmed', array('rule' => 'isConfirmed', 'message' => __d('common', "No match.")));
     }
     return true;
 }
예제 #2
0
 /**
  * testSetRules method
  *
  * @return void
  */
 public function testSetRules()
 {
     $rule = array('notEmpty' => array('rule' => 'notEmpty', 'message' => 'Can not be empty'));
     $Field = new CakeValidationSet('title', $rule);
     $RuleEmpty = new CakeValidationRule($rule['notEmpty']);
     $rule = array('validEmail' => array('rule' => 'email', 'message' => 'Invalid email'));
     $RuleEmail = new CakeValidationRule($rule['validEmail']);
     $rules = array('validEmail' => $RuleEmail);
     $Field->setRules($rules, false);
     $result = $Field->getRules();
     $this->assertEquals(array('validEmail'), array_keys($result));
     $Field->setRules(array('validEmail' => $rule), false);
     $result = $Field->getRules();
     $this->assertEquals(array('validEmail'), array_keys($result));
     $this->assertTrue(array_pop($result) instanceof CakeValidationRule);
     $rules = array('notEmpty' => $RuleEmpty);
     $Field->setRules($rules, true);
     $result = $Field->getRules();
     $this->assertEquals(array('validEmail', 'notEmpty'), array_keys($result));
     $rules = array('notEmpty' => array('rule' => 'notEmpty'));
     $Field->setRules($rules, true);
     $result = $Field->getRules();
     $this->assertEquals(array('validEmail', 'notEmpty'), array_keys($result));
     $this->assertTrue(array_pop($result) instanceof CakeValidationRule);
     $this->assertTrue(array_pop($result) instanceof CakeValidationRule);
 }