/** * Add 1 or more validation rules * * @example // add multiple rules at once * $validator->add(array( * 'required', * array('required', array('email', null, '{label} must be an email', 'Field B')), * )); * // add multiple rules using a string * $validator->add('required | email'); * // add validator with options * $validator->add('minlength', array('min' => 2), '{label} should have at least {min} characters', 'Field'); * // add validator with string and parameters as JSON string * $validator->add('minlength({"min": 2})({label} should have at least {min} characters)(Field)'); * // add validator with string and parameters as query string * $validator->add('minlength(min=2)({label} should have at least {min} characters)(Field)'); * @param string|callback $name * @param string|array $options * @param string $messageTemplate * @param string $label * @return \Sirius\Validation\Validator */ function add($name, $options = null, $messageTemplate = null, $label = null) { if (is_array($name) && !is_callable($name)) { foreach ($name as $singleRule) { // make sure the rule is an array (the parameters of subsequent calls); $singleRule = is_array($singleRule) ? $singleRule : array($singleRule); call_user_func_array(array($this, 'add'), $singleRule); } return $this; } if (is_string($name)) { // rule was supplied like 'required' or 'required | email' if (strpos($name, ' | ') !== false) { return $this->add(explode(' | ', $name)); } // rule was supplied like this 'length(2,10)(error message template)(label)' if (strpos($name, '(') !== false) { list($name, $options, $messageTemplate, $label) = $this->parseRule($name); } } $validator = $this->ruleFactory->createValidator($name, $options, $messageTemplate, $label); $validator->setErrorMessagePrototype($this->errorMessagePrototype); $this->rules->attach($validator); return $this; }
/** * @param AbstractValidator $validationRule * * @return ValueValidator */ public function addRule(AbstractRule $validationRule) { $validationRule->setErrorMessagePrototype($this->errorMessagePrototype); $this->rules->attach($validationRule); return $this; }