我在模型上配置了Sluggable行为,如下所示:
public function behaviors() {
return [
[
'class' => SluggableBehavior::className(),
'attribute' => 'title',
'ensureUnique' => true,
]
];
}
我需要这样做:
我发现Sluggable Behavior有一个属性" immutable"但我没有看到操纵它的方法。
如果给出了值,我也没有办法停止自动生成。
有什么想法吗?
答案 0 :(得分:2)
对于这些不寻常的要求,您应该扩展SluggableBehavior
并覆盖getValue()
和isNewSlugNeeded()
方法,以满足您的需求。
您还可以使用$value
属性和/或更改模型beforeValidate()
中的某些行为设置:
public function beforeValidate() {
$this->getBahavior('my-behavior-name')->immutable = !$this->changeSlugCheckbox;
return parent::beforeValidate();
}
但是自定义行为是更加干净的解决方案。