Я настроил Sluggable поведение на моей модели следующим образом:
public function behaviors() {
return [
[
'class' => SluggableBehavior::className(),
'attribute' => 'title',
'ensureUnique' => true,
]
];
}
Мне нужно сделать:
Я обнаружил, что Sluggable Behavior имеет атрибут «неизменный», но я не вижу способа манипулировать им.
Также я не вижу способа остановить автоматическую генерацию, если задано значение.
Есть идеи?
Для таких необычных требований вы должны, вероятно, расширить SluggableBehavior
и перезаписать getValue()
а также isNewSlugNeeded()
методы подвигать ваши потребности.
Вы также можете играть с $value
свойства и / или изменить некоторые настройки поведения в beforeValidate()
модели:
public function beforeValidate() {
$this->getBahavior('my-behavior-name')->immutable = !$this->changeSlugCheckbox;
return parent::beforeValidate();
}
Но нестандартное поведение — гораздо более чистое решение.
Других решений пока нет …