yii2 SluggableBehavior仅适用于emty slug字段

时间:2017-03-14 13:05:42

标签: yii2 behavior

我正在以这种方式使用SluggableBehavior

public function behaviors()
    {
        return [
            [
                'class' => SluggableBehavior::className(),
                'attribute' => 'name',
                'slugAttribute' => 'alias',
            ],
        ];
    }

它很好用如果字段'别名'在形式是空的。 如何忽略此行为如果字段alias在表单提交时不为空?

提前感谢!

2 个答案:

答案 0 :(得分:1)

在行为配置中添加'immutable'=>true

行为以这种方式起作用,如果slugAttribute开启时immutable不为空,则该属性不会更改。

答案 1 :(得分:0)

尝试类似:

  1. 使用特定名称配置此行为:

    return [
        'slug' => [
            'class' => SluggableBehavior::className(),
            'attribute' => 'name',
            'slugAttribute' => 'alias',
        ],
    ];
    
  2. 来自表单的控制器加载属性(验证前)。

  3. 检查alias属性是否为空。
  4. 如果不是 - 请分离此行为($this->detachBehavior('slug'))。
  5. 验证模型。