Привет!
У меня стандартный CRUD, сгенеренный gii. Есть модель Book, и есть BookSearch. Настроено SluggableBehavior тоже обычно:
[
'class' => 'yii\behaviors\SluggableBehavior',
'attribute' => 'name',
'ensureUnique' => true,
],
Все окей, но если вручную в БД удалить для одной записи значение из колонки slug - то в модели BookSearch после валидации
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$this->slug становится равным "-2". Соответственно, в gridview становится пусто, так как ни одной записи со slug == -2 не находится.
Как вы думаете, это баг или фича? На мой взгляд, не очень прозрачное поведение. Т.е., получается, SluggableBehavior разработано при допущении, что в таблице ни при каких обстоятельствах не будет записей с пустым slug? А мне вот понадобилось… и пришлось убрать поиск в gridview по slug (что тоже нужно). В багтрекере отвергли мое сообщение - поэтому и пишу сюда, разобраться, что я недопонял.