Yii2 — медлительное поведение

Я настроил Sluggable поведение на моей модели следующим образом:

public function behaviors() {
return [
[
'class' => SluggableBehavior::className(),
'attribute' => 'title',
'ensureUnique' => true,
]
];
}

Мне нужно сделать:

  • Если пользователь заполняет поле формы с именем «URL», его следует использовать вместо автоматически созданного слага.
  • Если пользователь изменяет заголовок, он помечает флажок, если он хочет, чтобы слаг обновлялся.

Я обнаружил, что Sluggable Behavior имеет атрибут «неизменный», но я не вижу способа манипулировать им.

Также я не вижу способа остановить автоматическую генерацию, если задано значение.

Есть идеи?

2

Решение

Для таких необычных требований вы должны, вероятно, расширить SluggableBehavior и перезаписать getValue() а также isNewSlugNeeded() методы подвигать ваши потребности.

Вы также можете играть с $value свойства и / или изменить некоторые настройки поведения в beforeValidate() модели:

public function beforeValidate() {
$this->getBahavior('my-behavior-name')->immutable = !$this->changeSlugCheckbox;

return parent::beforeValidate();
}

Но нестандартное поведение — гораздо более чистое решение.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]