Lumore
@Lumore
Front-end developer

Slug не генерируется при создании записи?

Использую Sluggable Behavior, хочу чтобы при создании записи автоматически генерировался уникальный slug:
public function behaviors()
    {
        return [
            [
                'class' => SluggableBehavior::className(),
                'attribute' => 'name',
                'ensureUnique' => true
            ],
            'timestampBehavior' => [
                'class' => TimestampBehavior::className(),
            ],
        ];
    }

И в контроллере:
if ($model->load(Yii::$app->request->post())) {
            $model->user_id = Yii::$app->user->id;
            $model->status = Place::STATUS_ACTIVE;
            // $model->slug = \yii\helpers\BaseInflector::slug($model->name); // Саначала решил проблему этим, но это генерирует не уникальный слаг
            if($model->save(false)) {
                return $this->redirect(['/'.$model->slug]);
            }
        }

Вот ошибка, соответсвенно:
SQLSTATE[HY000]: General error: 1364 Field 'slug' doesn't have a default value


Если нажать "Update" и сохранить без изменений, он только тогда сгенерируется, но мне нужно чтобы генерировалось с самого создания.
В чем проблема? В прошлых проектах было все нормально, сейчас что-то пошло не так.
  • Вопрос задан
  • 643 просмотра
Решения вопроса 1
@Arik
вы указываете не валидировать данные $model->save(false) , а там кажется привязка на событие генерить до валидации данных
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы