Browse Source

Using only arrays in rules instead comma-separated string

tags/2.0.0-beta
slavcodev 11 years ago
parent
commit
1c2489a3dc
  1. 18
      framework/yii/base/Model.php
  2. 13
      framework/yii/validators/Validator.php

18
framework/yii/base/Model.php

@ -91,19 +91,19 @@ class Model extends Component implements IteratorAggregate, ArrayAccess
*
* ~~~
* [
* 'attribute list',
* ['attribute1', 'attribute2'],
* 'validator type',
* 'on' => 'scenario name',
* 'on' => ['scenario1', 'scenario2'],
* ...other parameters...
* ]
* ~~~
*
* 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
* 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.
* - additional name-value pairs can be specified to initialize the corresponding validator properties.
* Please refer to individual validator class API for possible properties.
@ -128,15 +128,15 @@ class Model extends Component implements IteratorAggregate, ArrayAccess
* ~~~
* [
* // built-in "required" validator
* ['username', 'required'],
* [['username'], 'required'],
* // 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
* ['password', 'compare', 'compareAttribute' => 'password2', 'on' => 'register'],
* [['password'], 'compare', 'compareAttribute' => 'password2', 'on' => 'register'],
* // 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"
* ['dateRange', 'DateRangeValidator'],
* [['dateRange'], 'DateRangeValidator'],
* ];
* ~~~
*

13
framework/yii/validators/Validator.php

@ -133,17 +133,14 @@ abstract class Validator extends Component
*/
public static function createValidator($type, $object, $attributes, $params = [])
{
if (!is_array($attributes)) {
$attributes = preg_split('/[\s,]+/', $attributes, -1, PREG_SPLIT_NO_EMPTY);
}
$params['attributes'] = $attributes;
$params['attributes'] = (array) $attributes;
if (isset($params['on']) && !is_array($params['on'])) {
$params['on'] = preg_split('/[\s,]+/', $params['on'], -1, PREG_SPLIT_NO_EMPTY);
if (isset($params['on'])) {
$params['on'] = (array) $params['on'];
}
if (isset($params['except']) && !is_array($params['except'])) {
$params['except'] = preg_split('/[\s,]+/', $params['except'], -1, PREG_SPLIT_NO_EMPTY);
if (isset($params['except'])) {
$params['except'] = (array) $params['except'];
}
if (method_exists($object, $type)) {

Loading…
Cancel
Save