Спасибо. Теперь все работает, как надо!
У меня есть еще один интересный момент. В codeIgniter я реализовывал через составной alias. А именно:
- Имеется база с более 40 000 записей (rss новости с фликра по оригами).
- При добавлении новой очень большая вероятность, что похожая уже есть, причем не одна. (например "origami heart" встречается более 50 раз)
- Это означает, что при добавлении следующей записи "origami heart", поведение, как я понял, будет генерировать уникальный slug, поочередно перебирая свободные от origami-heart1 до origami-heart50, т.е. делать 50 запросов в базу...
- есть идея, для такого случая генерировать slug вида id-записи + slug.
- т.е. в данное поведение добавить следующий функционал (suffix и prefix)...
Код: Выделить всё
public function behaviors()
{
return [
[
'class' => \app\components\SluggableBehavior::className(),
'attribute' => 'name',
'slugAttribute' => 'slug',
'transliterator' => 'Russian-Latin/BGN; NFKD',
//Set this to true, if you want to update a slug when source attribute has been changed
'forceUpdate' => false,
// для id=145
'suffix' => 'id' // получим slug-145
//или
'prefix' => 'id' // // получим 145-slug
],
];
}
т.е окончательно уникальный slug видимо придется получить в методе AfterSave (если указаны 'suffix' или 'prefix' ) и дополнительно обновить slug при операции insert.
---------
p.s. Как я писал, в CI я делал составной alias (в разных полях). Приходилось мне делать доп. роутинг, проверять существование записи по id а также сопоставлять с его alias-ом... И это для каждого модуля.
Словом, хранение aliasa в виде id+slug в одном поле намного облегчит работу с таблицей, где title может встречаться многократно.