/** * @inheritdoc */ protected function getValue($event) { /* @var $owner ActiveRecord */ $owner = $this->owner; if (!empty($owner->{$this->slugAttribute}) && !$this->slugIsEmpty && $this->immutable) { $slug = $owner->{$this->slugAttribute}; } else { if ($owner->getIsNewRecord()) { $this->slugIsEmpty = true; } if ($this->attribute !== null) { $attributes = $this->attribute; $slugParts = array_map(function ($attribute) { return ArrayHelper::getValue($this->owner, $attribute); }, $attributes); $slug = $this->slugify(implode($this->replacement, $slugParts), $this->replacement, $this->lowercase); if (!$owner->getIsNewRecord() && $this->slugIsEmpty) { $owner->{$this->slugAttribute} = $slug; $owner->save(false, [$this->slugAttribute]); } } else { $slug = parent::getValue($event); } } if ($this->ensureUnique) { $baseSlug = $slug; $iteration = 0; while (!$this->validateSlug($slug)) { $iteration++; $slug = $this->generateUniqueSlug($baseSlug, $iteration); } } return $slug; }
public function getValue($event) { $this->setLanguage(); if ($this->language != 'fa') { return parent::getValue($event); } $isNewSlug = true; if ($this->attribute !== null) { $attributes = (array) $this->attribute; /* @var $owner BaseActiveRecord */ $owner = $this->owner; if (!empty($owner->{$this->slugAttribute})) { $isNewSlug = false; if (!$this->immutable) { foreach ($attributes as $attribute) { if ($owner->isAttributeChanged($attribute)) { $isNewSlug = true; break; } } } } if ($isNewSlug) { $slugParts = []; foreach ($attributes as $attribute) { $slugParts[] = $owner->{$attribute}; } $slug = Inflector::persianSlug(implode('-', $slugParts)); } else { $slug = $owner->{$this->slugAttribute}; } } else { $slug = parent::getValue($event); } if ($this->ensureUnique && $isNewSlug) { $baseSlug = $slug; $iteration = 0; while (!$this->validateSlug($slug)) { $iteration++; $slug = $this->generateUniqueSlug($baseSlug, $iteration); } } return $slug; }
/** * @inheritdoc */ protected function getValue($event) { $isNewSlug = true; if ($this->attribute !== null) { $attributes = (array) $this->attribute; /* @var $owner BaseActiveRecord */ $owner = $this->owner; if (!$owner->getIsNewRecord() && !empty($owner->{$this->slugAttribute})) { $isNewSlug = false; foreach ($attributes as $attribute) { if ($owner->isAttributeChanged($attribute) && $this->forceUpdate) { $isNewSlug = true; break; } } } if ($isNewSlug) { $slugParts = []; foreach ($attributes as $attribute) { $slugParts[] = $owner->{$attribute}; } $oldTransliterator = Inflector::$transliterator; if (isset($this->transliterator)) { Inflector::$transliterator = $this->transliterator; } $slug = Inflector::slug(implode('_', $slugParts)); Inflector::$transliterator = $oldTransliterator; } else { $slug = $owner->{$this->slugAttribute}; } } else { $slug = parent::getValue($event); } if ($this->ensureUnique && $isNewSlug) { $baseSlug = $slug; $iteration = 0; while (!$this->validateSlug($slug)) { $iteration++; $slug = $this->generateUniqueSlug($baseSlug, $iteration); } } return $slug; }