|
|
|
@ -60,12 +60,24 @@ class UniqueValidator extends Validator
|
|
|
|
|
*/ |
|
|
|
|
public $filter; |
|
|
|
|
/** |
|
|
|
|
* @var string the user-defined error message used when [[targetAttribute]] is an array. It may contain the following placeholders: |
|
|
|
|
* @var string the user-defined error message. When validating single attribute, it may contain |
|
|
|
|
* the following placeholders which will be replaced accordingly by the validator: |
|
|
|
|
* |
|
|
|
|
* - `{attribute}`: the label of the attribute being validated |
|
|
|
|
* - `{value}`: the value of the attribute being validated |
|
|
|
|
* |
|
|
|
|
* When validating mutliple attributes, it may contain the following placeholders: |
|
|
|
|
* |
|
|
|
|
* - `{attributes}`: the labels of the attributes being validated. |
|
|
|
|
* - `{values}`: the values of the attributes being validated. |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
public $message; |
|
|
|
|
/** |
|
|
|
|
* @var string |
|
|
|
|
* @since 2.0.9 |
|
|
|
|
* @deprecated Deprecated since version 2.0.10, to be removed in 2.1. Use [[message]] property |
|
|
|
|
* to setup custom message for multiple target attributes. |
|
|
|
|
*/ |
|
|
|
|
public $comboNotUnique; |
|
|
|
|
|
|
|
|
@ -76,11 +88,18 @@ class UniqueValidator extends Validator
|
|
|
|
|
public function init() |
|
|
|
|
{ |
|
|
|
|
parent::init(); |
|
|
|
|
if ($this->message === null) { |
|
|
|
|
$this->message = Yii::t('yii', '{attribute} "{value}" has already been taken.'); |
|
|
|
|
if ($this->message !== null) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (is_array($this->targetAttribute) && count($this->targetAttribute) > 1) { |
|
|
|
|
// fallback for deprecated `comboNotUnique` property - use it as message if is set |
|
|
|
|
if ($this->comboNotUnique === null) { |
|
|
|
|
$this->comboNotUnique = Yii::t('yii', 'The combination {values} of {attributes} has already been taken.'); |
|
|
|
|
$this->message = Yii::t('yii', 'The combination {values} of {attributes} has already been taken.'); |
|
|
|
|
} else { |
|
|
|
|
$this->message = $this->comboNotUnique; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$this->message = Yii::t('yii', '{attribute} "{value}" has already been taken.'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -172,7 +191,7 @@ class UniqueValidator extends Validator
|
|
|
|
|
$valueCombo[] = '"' . $model->$key . '"'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$this->addError($model, $attribute, $this->comboNotUnique, [ |
|
|
|
|
$this->addError($model, $attribute, $this->message, [ |
|
|
|
|
'attributes' => Inflector::sentence($attributeCombo), |
|
|
|
|
'values' => implode('-', $valueCombo) |
|
|
|
|
]); |
|
|
|
|