public function getValue($event)
{
if (!$this->value) {
$filter = new FilterSeoPageName();
$filter->maxLength = $this->maxLength;
if ($this->owner->{$this->generatedAttribute}) {
$seoPageName = $filter->filter($this->owner->{$this->generatedAttribute});
} else {
$seoPageName = $filter->filter($this->owner->{$this->fromAttribute});
}
//Нужно чтобы поле было уникальным
if ($this->uniqeue) {
if (!$this->owner->isNewRecord) {
//Значит неуникально
if ($founded = $this->owner->find()->where([$this->generatedAttribute => $seoPageName])->andWhere(["!=", "id", $this->owner->id])->one()) {
if ($last = $this->owner->find()->orderBy('id DESC')->one()) {
$seoPageName = $seoPageName . '-' . $last->id;
return $filter->filter($seoPageName);
}
}
} else {
//Значит неуникально
if ($founded = $this->owner->find()->where([$this->generatedAttribute => $seoPageName])->one()) {
if ($last = $this->owner->find()->orderBy('id DESC')->one()) {
$seoPageName = $seoPageName . '-' . $last->id;
return $filter->filter($seoPageName);
}
}
}
}
return $seoPageName;
} else {
return call_user_func($this->value, $event);
}
}