public function validateAttribute($validatedValue) { if (is_object($validatedValue)) { return false; } /** * Condition attribute value */ $value = $this->getValueParsed(); /** * Comparison operator */ $op = $this->getOperatorForValidate(); // if operator requires array and it is not, or on opposite, return false if ($this->_isArrayOperatorType() xor is_array($value)) { return false; } $result = false; switch ($op) { case '{%': if (!is_scalar($validatedValue)) { return false; } else { $result = substr($validatedValue, 0, strlen($value)) == $value; } break; case '%}': if (!is_scalar($validatedValue)) { return false; } else { $result = substr($validatedValue, -strlen($value)) == $value; } break; default: return parent::validateAttribute($validatedValue); break; } return $result; }
/** * Overwrite parent method to add new operators * * @param mixed $validatedValue * * @return bool */ public function validateAttribute($validatedValue) { if (is_object($validatedValue)) { return false; } /** * Condition attribute value */ $value = $this->getValueParsed(); /** * Comparison operator */ $op = $this->getOperatorForValidate(); // if operator requires array and it is not, or on opposite, return false if ($this->isArrayOperatorType() xor is_array($value)) { return false; } switch ($op) { case '><': case '<>': $explodedValue = explode('-', $value); $result = $validatedValue >= $explodedValue[0] && $validatedValue <= $explodedValue[1]; break; default: return parent::validateAttribute($validatedValue); break; } if ($op == '<>') { $result = !$result; } return $result; }