示例#1
0
 /**
  * Validates a field value by the given validations.
  *
  * @param string  $fieldName
  * @param string  $value
  * @param boolean $isFinals
  * @throws PIECE_RIGHT_ERROR_NOT_FOUND
  * @throws PIECE_RIGHT_ERROR_INVALID_VALIDATOR
  * @throws PIECE_RIGHT_ERROR_CANNOT_READ
  * @throws PIECE_RIGHT_ERROR_NOT_READABLE
  * @since Method available since Release 0.3.0
  */
 function _validateField($fieldName, $value, $isFinals)
 {
     foreach ($this->_config->getValidations($fieldName) as $validation) {
         if ($validation['useInFinals'] != $isFinals) {
             continue;
         }
         $validator =& Piece_Right_Validator_Factory::factory($validation['validator']);
         if (Piece_Right_Error::hasErrors('exception')) {
             return;
         }
         if (is_array($value) && !$validator->isArrayable()) {
             Piece_Right_Error::pushCallback(create_function('$error', 'return ' . PEAR_ERRORSTACK_PUSHANDLOG . ';'));
             Piece_Right_Error::push(PIECE_RIGHT_ERROR_NOT_ARRAYABLE, "The value of the field [ {$fieldName} ] is an array, but the validator [ {$validation['validator']} ] is not arrayable. This validation is skipped.", 'warning');
             Piece_Right_Error::popCallback();
             $this->_results->addError($fieldName, $validation['validator'], $validator->getMessage());
             continue;
         }
         $validator->setResults($this->_results);
         $validator->setRules($validation['rules']);
         $validator->setMessage($validation['message']);
         $validator->setPayload($this->_payload);
         if (!$validator->validate($value)) {
             $this->_results->addError($fieldName, $validation['validator'], $validator->getMessage());
         }
     }
 }
示例#2
0
 /**
  * Validates a field value by the given validations.
  *
  * @param string  $fieldName
  * @param string  $value
  * @param boolean $isFinals
  * @since Method available since Release 0.3.0
  */
 function _validateField($fieldName, $value, $isFinals)
 {
     foreach ($this->_config->getValidations($fieldName) as $validation) {
         if ($validation['useInFinals'] != $isFinals) {
             continue;
         }
         $validator =& Piece_Right_Validator_Factory::factory($validation['validator']);
         if (Piece_Right_Error::hasErrors()) {
             return;
         }
         if (is_array($value) && !$validator->isArrayable()) {
             trigger_error("The value of the field [ {$fieldName} ] is an array, but the validator [ {$validation['validator']} ] is not arrayable. This validation is skipped.", E_USER_WARNING);
             $this->_results->addError($fieldName, $validation['validator'], $validator->getMessage());
             continue;
         }
         $validator->setResults($this->_results);
         $validator->setRules($validation['rules']);
         $validator->setMessage($validation['message']);
         $validator->setPayload($this->_payload);
         if (!$validator->validate($value)) {
             $this->_results->addError($fieldName, $validation['validator'], $validator->getMessage());
             if (!$this->_config->forceValidation($fieldName)) {
                 return;
             }
         }
     }
 }
 function testValidatorPrefixes()
 {
     $oldValidatorPrefixes = $GLOBALS['PIECE_RIGHT_Validator_Prefixes'];
     $oldValidatorDirectories = $GLOBALS['PIECE_RIGHT_Validator_Directories'];
     $config =& new Piece_Unity_Config();
     $config->setConfiguration('KernelConfigurator', 'validationValidatorPrefixes', array('KernelConfiguratorTestCaseAlias'));
     $config->setConfiguration('KernelConfigurator', 'validationValidatorDirectories', array(dirname(__FILE__) . '/KernelConfiguratorTestCase'));
     $context =& Piece_Unity_Context::singleton();
     $context->setConfiguration($config);
     $configurator =& new Piece_Unity_Plugin_KernelConfigurator();
     $configurator->invoke();
     $foo =& Piece_Right_Validator_Factory::factory('FooValidator');
     $this->assertTrue(is_object($foo));
     $this->assertTrue(is_a($foo, 'KernelConfiguratorTestCaseAlias_FooValidator'));
     Piece_Right_Validator_Factory::clearInstances();
     $GLOBALS['PIECE_RIGHT_Validator_Directories'] = $oldValidatorDirectories;
     $GLOBALS['PIECE_RIGHT_Validator_Prefixes'] = $oldValidatorPrefixes;
 }