/** * 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()); } } }
/** * 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; }