Для того, что бы организовать генерацию поля "code", удобно использовать стандартный функционал Yii2 SluggableBehavior.
Шаги реализации
1) Добавляем поведение SluggableBehavior
Открываем файл модели (например, app\models\YourModel.php) и подключаем пространство имен в шапке:
use yii\behaviors\SluggableBehavior;
2) Реализация поведения в модели
public function behaviors()
{
return [
'slug' => [
'class' => SluggableBehavior::className(),
'attribute' => 'title', // Поле исходного значения (откуда получать данные)
'slugAttribute' => 'code', // Поле куда сохраняется транслитерация
'ensureUnique' => true, // Поле с кодом должно быть уникальным
],
];
}
В контроллер или view добавлять ничего не нужно. При каждом обновлении или добавлении элементов модели, будет происходить транслитерация.
Если нужно настроить собственный алгоритм транслитерации, можно реализовать свой обработчик внутри метода beforeSave().