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);
}
Скажем так не самый элегантый способ. И у меня вопрос есть ли способ сделать это по проще??