3 способа сделать транслитерацию с помощью SlugBehavior в Yii2 по ГОСТ

Для генерации slug в Yii2 используется поведение SlugBehavior, но без дополнительных настроек у него есть довольно неприятная особенность в сочетании с русским языком, он неверно преобразует некоторые буквы, к примеру: букву ш он переводит в s, а хотелось бы видеть sh. Давайте разберемся как этого избежать.

Для решения проблемы со стандартным поведение у меня есть 3 варианта:

1. Использовать вместо стандартного готовое поведение Yii2 slug behavior от zelenin

2. В конфигурации приложения на некоторые события переопределять статическую переменную $transliterator

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

3. Сделать то же самое, но переопределив весь хелпер yii\helpers\Inflector в соответствии с документацией к фраймворку. Для этого создаем файл Inflector с содержанием

<?php

namespace yii\helpers;

class Inflector extends BaseInflector
{
    public static $transliterator = 'Russian-Latin/BGN; Any-Latin; Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC;';
}

в папке common/ext/ и в файле common/config/bootstrap.php заменяем, использующийся по-умолчанию, нашим:

Yii::$classMap['yii\helpers\Inflector'] = '@common/ext/Inflector.php';
comments powered by HyperComments
alex42215
2018-09-13 00:36:33
Здравствуйте, вы пишете статьи на сайты сами? Мы занимаемся восстановлением уникальных статьей, из удаленных из интернета сайтов. Предлагаем снабжать вас контентом. Статьи раздаем бесплатно, переходите к нам - http://shoptxt.ru/content.php Отписаться от рассылки - http://shoptxt.ru/dell.php?dell=PLAY-STOP.RU
alex74268
2018-09-21 01:00:28
Здравствуйте, вы пишете статьи на сайты сами? Мы занимаемся восстановлением уникальных статьей, из удаленных из интернета сайтов. Предлагаем снабжать вас контентом. Статьи раздаем бесплатно, переходите к нам - http://shoptxt.ru/content.php Отписаться от рассылки - http://shoptxt.ru/dell.php?dell=PLAY-STOP.RU
alex68882
2018-09-08 03:08:55
Здравствуйте, вы пишете статьи на сайты сами? Мы занимаемся восстановлением уникальных статьей, из удаленных из интернета сайтов. Предлагаем снабжать вас контентом. Статьи раздаем бесплатно, переходите к нам - http://shoptxt.ru/content.php Отписаться от рассылки - http://shoptxt.ru/dell.php?dell=PLAY-STOP.RU
alex77778
2018-09-09 16:37:16
Здравствуйте, вы пишете статьи на сайты сами? Мы занимаемся восстановлением уникальных статьей, из удаленных из интернета сайтов. Предлагаем снабжать вас контентом. Статьи раздаем бесплатно, переходите к нам - http://shoptxt.ru/content.php Отписаться от рассылки - http://shoptxt.ru/dell.php?dell=PLAY-STOP.RU
При копировании материалов обратная ссылка на play-stop.ru желательна обязательна!