protected function validate() { $data = filter_input(INPUT_POST, $this->model); $error = false; foreach ($this->validation_rules as $field => $config) { $validator = new v(); $validator->addRules($config['rules']); if ($config['optional']) { $this->validate[$field] = v::optional($validator); } else { $this->validate[$field] = $validator; } $error = $this->validate[$field]->validate($data[$field]); } return $error; }
public function __construct(array $options) { $options = ['baseUri' => Arr::get($options, 'baseUri', $this->baseUri), 'timeout' => Arr::get($options, 'timeout', $this->timeout), 'proxy' => Arr::get($options, 'proxy', $this->proxy), 'auth' => Arr::get($options, 'auth', $this->auth), 'logger' => Arr::get($options, 'logger')]; try { V::arrayVal()->key('baseUri', V::url()->notEmpty())->key('timeout', V::floatVal()->min(0))->key('proxy', V::optional(V::url()))->key('auth', V::arrayVal()->key('user', V::stringType())->key('pass', V::stringType()))->key('logger', V::instance('\\Psr\\Log\\LoggerInterface'))->assert($options); } catch (\InvalidArgumentException $e) { $errors = array_filter($e->findMessages(['baseUri' => 'Required correct baseUri', 'timeout' => 'Required correct timeout', 'proxy' => 'Required correct proxy', 'auth' => 'Required correct authuser', 'logger' => 'Required a logger instance of psr\\log'])); $errmsg = array_shift($errors); throw new Exception($errmsg); } $this->baseUri = $options['baseUri']; $this->timeout = $options['timeout']; $this->proxy = $options['proxy']; $this->auth = $options['auth']; $this->logger = $options['logger']; }
/** * Create a negative or optional validator instance. * * @param string $filter * @param array $rules * * @return \Respect\Validation\Validator */ protected function createNegativeOrOptionalValidator(string $filter, array $rules) : RespectValidator { list($method, $parameters) = $this->parseStringRule($rules[0]); unset($rules[0]); $validator = call_user_func_array([RespectValidator::class, str_replace($filter, '', $method)], $parameters); if ($filter === '!') { return RespectValidator::not($this->createChainableValidators($validator, $rules)); } return RespectValidator::optional($this->createChainableValidators($validator, $rules)); }
private function validate() { try { $validator = v::attribute('merchantAlias', v::stringType()->alnum('_')->noWhitespace()->length(1, 30))->attribute('macKey', v::stringType()->length(1))->attribute('transactionCode', v::stringType()->alnum()->noWhitespace()->length(1, 30))->attribute('requestType', v::oneOf(v::stringType()->equals(self::REQUEST_TYPE_FIRST_ATTEMPT), v::stringType()->equals(self::REQUEST_TYPE_RETRY_ATTEMPT)))->attribute('operationId', v::stringType()->digit()->noWhitespace()->length(1, 10))->attribute('operationType', v::oneOf(v::stringType()->equals(self::OPERATION_TYPE_CAPTURE), v::stringType()->equals(self::OPERATION_TYPE_VOID)))->attribute('originalAmount', v::stringType()->digit()->noWhitespace()->length(9, 9))->attribute('currency', v::stringType()->alnum()->noWhitespace()->length(3, 3))->attribute('authCode', v::stringType()->alnum()->noWhitespace()->length(1, 10))->attribute('operationAmount', v::stringType()->digit()->noWhitespace()->length(9, 9))->attribute('user', v::optional(v::stringType()->alnum()->length(0, 20)))->attribute('isTest', v::boolType()); $validator->assert($this); } catch (NestedValidationException $e) { throw new ValidationException($e->getFullMessage()); } }
public function testValidationNotExistingOptionalParameter() { $notExistingValidator = v::optional(v::alpha()); $validators = array('notExisting' => $notExistingValidator); $mw = new Validation($validators); $next = function ($req, $res) { return $res; }; $response = $mw($this->request, $this->response, $next); $errors = array(); $this->assertFalse($mw->hasErrors()); $this->assertEquals($errors, $mw->getErrors()); }