Commit 1c2489a3 by slavcodev

Using only arrays in rules instead comma-separated string

parent 6066c29a
...@@ -91,19 +91,19 @@ class Model extends Component implements IteratorAggregate, ArrayAccess ...@@ -91,19 +91,19 @@ class Model extends Component implements IteratorAggregate, ArrayAccess
* *
* ~~~ * ~~~
* [ * [
* 'attribute list', * ['attribute1', 'attribute2'],
* 'validator type', * 'validator type',
* 'on' => 'scenario name', * 'on' => ['scenario1', 'scenario2'],
* ...other parameters... * ...other parameters...
* ] * ]
* ~~~ * ~~~
* *
* where * where
* *
* - attribute list: required, specifies the attributes (separated by commas) to be validated; * - attribute list: required, specifies the attributes array to be validated;
* - validator type: required, specifies the validator to be used. It can be the name of a model * - validator type: required, specifies the validator to be used. It can be the name of a model
* class method, the name of a built-in validator, or a validator class name (or its path alias). * class method, the name of a built-in validator, or a validator class name (or its path alias).
* - on: optional, specifies the [[scenario|scenarios]] (separated by commas) when the validation * - on: optional, specifies the [[scenario|scenarios]] array when the validation
* rule can be applied. If this option is not set, the rule will apply to all scenarios. * rule can be applied. If this option is not set, the rule will apply to all scenarios.
* - additional name-value pairs can be specified to initialize the corresponding validator properties. * - additional name-value pairs can be specified to initialize the corresponding validator properties.
* Please refer to individual validator class API for possible properties. * Please refer to individual validator class API for possible properties.
...@@ -128,15 +128,15 @@ class Model extends Component implements IteratorAggregate, ArrayAccess ...@@ -128,15 +128,15 @@ class Model extends Component implements IteratorAggregate, ArrayAccess
* ~~~ * ~~~
* [ * [
* // built-in "required" validator * // built-in "required" validator
* ['username', 'required'], * [['username'], 'required'],
* // built-in "string" validator customized with "min" and "max" properties * // built-in "string" validator customized with "min" and "max" properties
* ['username', 'string', 'min' => 3, 'max' => 12], * [['username'], 'string', 'min' => 3, 'max' => 12],
* // built-in "compare" validator that is used in "register" scenario only * // built-in "compare" validator that is used in "register" scenario only
* ['password', 'compare', 'compareAttribute' => 'password2', 'on' => 'register'], * [['password'], 'compare', 'compareAttribute' => 'password2', 'on' => 'register'],
* // an inline validator defined via the "authenticate()" method in the model class * // an inline validator defined via the "authenticate()" method in the model class
* ['password', 'authenticate', 'on' => 'login'], * [['password'], 'authenticate', 'on' => 'login'],
* // a validator of class "DateRangeValidator" * // a validator of class "DateRangeValidator"
* ['dateRange', 'DateRangeValidator'], * [['dateRange'], 'DateRangeValidator'],
* ]; * ];
* ~~~ * ~~~
* *
......
...@@ -133,17 +133,14 @@ abstract class Validator extends Component ...@@ -133,17 +133,14 @@ abstract class Validator extends Component
*/ */
public static function createValidator($type, $object, $attributes, $params = []) public static function createValidator($type, $object, $attributes, $params = [])
{ {
if (!is_array($attributes)) { $params['attributes'] = (array) $attributes;
$attributes = preg_split('/[\s,]+/', $attributes, -1, PREG_SPLIT_NO_EMPTY);
}
$params['attributes'] = $attributes;
if (isset($params['on']) && !is_array($params['on'])) { if (isset($params['on'])) {
$params['on'] = preg_split('/[\s,]+/', $params['on'], -1, PREG_SPLIT_NO_EMPTY); $params['on'] = (array) $params['on'];
} }
if (isset($params['except']) && !is_array($params['except'])) { if (isset($params['except'])) {
$params['except'] = preg_split('/[\s,]+/', $params['except'], -1, PREG_SPLIT_NO_EMPTY); $params['except'] = (array) $params['except'];
} }
if (method_exists($object, $type)) { if (method_exists($object, $type)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment