Browse Source

fix #11473 trailing backslash in class (#11474)

tags/3.0.0-alpha1
Angel Guevara 9 years ago committed by Carsten Brandt
parent
commit
e880ff2ff6
  1. 16
      framework/validators/UniqueValidator.php

16
framework/validators/UniqueValidator.php

@ -81,8 +81,9 @@ class UniqueValidator extends Validator
public function validateAttribute($model, $attribute)
{
/* @var $targetClass ActiveRecordInterface */
$targetClass = $this->targetClass === null ? get_class($model) : $this->targetClass;
$targetAttribute = $this->targetAttribute === null ? $attribute : $this->targetAttribute;
$targetClass = $this->targetClass ?: get_class($model);
$targetClass = ltrim($targetClass, '\\');
$targetAttribute = $this->targetAttribute ?: $attribute;
if (is_array($targetAttribute)) {
$params = [];
@ -95,7 +96,11 @@ class UniqueValidator extends Validator
foreach ($params as $value) {
if (is_array($value)) {
$this->addError($model, $attribute, Yii::t('yii', '{attribute} is invalid.'));
$this->addError(
$model,
$attribute,
Yii::t('yii', '{attribute} is invalid.')
);
return;
}
@ -110,7 +115,10 @@ class UniqueValidator extends Validator
$query->andWhere($this->filter);
}
if (!$model instanceof ActiveRecordInterface || $model->getIsNewRecord() || get_class($model) !== $targetClass) {
if (!$model instanceof ActiveRecordInterface
|| $model->getIsNewRecord()
|| get_class($model) !== $targetClass
) {
// if current $model isn't in the database yet then it's OK just to call exists()
// also there's no need to run check based on primary keys, when $targetClass is not the same as $model's class
$exists = $query->exists();

Loading…
Cancel
Save