
Настройка ЧПУ – стандартная часть работы по SEO-оптимизации любого сайта. Формировать URL только лишь по id записи из базы данных – плохая практика. Поэтому используются текстовые идентификаторы (слаги), как правило это транслитерированные заголовки страницы. Конечно этот процесс можно и нужно автоматизировать.
Многие часто используемые в веб программировании приёмы и подходы воплощаются программистами в виде расширений. Это хорошая практика использовать хорошие расширения, дабы не изобретать велосипед. В нашем случае для Yii2 задачу автоматического формирования и сохранения слагов к постам решает созданное Александром Зелениным расширение yii2-slug-behavior. Оно подключается и работает как поведение.
Устанавливаю его через composer.
Дальше просто подключаю поведение в нужной модели
public function behaviors() { return [ 'slug' => [ 'class' => 'Zelenin\yii\behaviors\Slug', 'slugAttribute' => 'slug', 'attribute' => 'name', // optional params 'ensureUnique' => true, 'replacement' => '-', 'lowercase' => true, 'immutable' => false, // If intl extension is enabled, see http://userguide.icu-project.org/transforms/general. 'transliterateOptions' => 'Russian-Latin/BGN; Any-Latin; Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC;' ] ]; }
Также слаг может создаваться из нескольких атрибутов, и даже связанных атрибутов
public function behaviors() { return [ 'slug' => [ ... 'attribute' => ['name', 'language.username'], ... ] ]; }
Описание и обсуждение разработки этого экстеншна - http://habrahabr.ru/post/208328/
15 июля 2015, SEO-оптимизация, Расширения, виджеты / Метки: slug

