Yii2 SluggableBehavior и правильный alias

Вообщем у меня есть интернет-магазин на yii2. И там есть продукты которые в названии используют кавычки, запятые, тире, и прочий мусор. Для генерации alias я использую встроенное поведение SluggableBehavior таким образом:

[
    'class' => SluggableBehavior::class,
    'attribute' => 'name',
    'slugAttribute' => 'alias',
    'ensureUnique' => true
],

и такую надстройку inflector`а:

'on beforeRequest' => function ($event) {
    \yii\helpers\BaseInflector::$transliterator = 'Russian-Latin/BGN; Any-Latin; Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC;';
},

В итоге, я получаю транслитированное название, но все вот эти знаки остаются и вообщем-то мне мешают. Для того, что бы их убрать я использую вот такую нехитрую конструкцию:

public function beforeSave ($insert) {
    $this->alias = preg_replace('/[^a-z0-9]/', '-', $this->alias);
    $this->alias = preg_replace('/(-){2,}/', '$1', $this->alias);

    return parent::beforeSave($insert);
}

Скажем так не самый элегантый способ. И у меня вопрос есть ли способ сделать это по проще??


Ответы (0 шт):