yii2-language-url-manager - разбирает и создает URL-адреса, содержащие язык

Выкладываем свои наработки
Ответить
cetver
Сообщения: 8
Зарегистрирован: 2017.05.23, 22:52

yii2-language-url-manager - разбирает и создает URL-адреса, содержащие язык

Сообщение cetver » 2017.07.19, 20:34

Установка

Предпочтительным способом установки этого расширения является composer

Либо выполните

Код: Выделить всё

composer require --prefer-dist cetver/yii2-language-url-manager
или добавьте

Код: Выделить всё

"cetver/yii2-language-url-manager": "^1.0"
в раздел require вашего файла composer.json.

Использование

Обновите файл конфигурации веб-приложения

Код: Выделить всё

return [
    'components' => [
        'urlManager' => [
            'class' => 'cetver\LanguageUrlManager\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            /*
             * Список доступных языков.
             */
            'languages' => ['en', 'ru'],
            /*
            или
            'languages' => function () {
                return \app\models\Language::find()->select('code')->column();
            },
            */
            /*
             * - true: разбирает URL вида "en.example.com"
             * - false: разбирает URL вида "example.com/en"
             * ЗАМЕЧАНИЕ: Если значение этого св-ва установлено в true, домен, содержащий язык, должен быть первым 
             * с левой стороны, например:
             * - en.it.example.com - правильно
             * - it.en.example.com - неправильно
             */
            'existsLanguageSubdomain' => false,
            /*
             * Список шаблонов регулярных выражений, применяемых к пути запроса (\yii\web\Request::getPathInfo()), 
             * если есть совпадения, запрос, содержащий язык, не будет обрабатываться.
             * По соображениям производительности, черный список не применяется для создания URL (см. Пример).
             * Пример:
             * ```php
             * [
             *     '/^api.*$/'
             * ]
             * ```
             * - Запрос к URL, находящемуся в черном списке
             *   - $existsLanguageSubdomain = true
             *     - en.example.com/api (404 Not Found)
             *     - en.example.com/api/create (404 Not Found)
             *   - $existsLanguageSubdomain = false
             *     - example.com/en/api (404 Not Found)
             *     - example.com/en/api/create (404 Not Found)
             * - Создание ссылки, находящейся в черном списке
             *   - echo \yii\helpers\Html::a('API', ['api/index', Yii::$app->urlManager->queryParam => null]);
             */
            'blacklist' => [],
            /*
             * Имя параметра запроса, содержащее язык.
             */
            'queryParam' => 'language'
        ],
    ]
];
Тесты

Выполните следующие команды

Код: Выделить всё

composer create-project --prefer-source cetver/yii2-languages-dispatcher
cd yii2-languages-dispatcher
vendor/bin/codecept run unit
Для поддержки интернационализации (I18N), ознакомьтесь с
Последний раз редактировалось cetver 2017.07.22, 17:51, всего редактировалось 1 раз.


cetver
Сообщения: 8
Зарегистрирован: 2017.05.23, 22:52

Re: yii2-language-url-manager - разбирает и создает URL-адреса, содержащие язык

Сообщение cetver » 2017.07.20, 11:32

  • Поддерживает субдомены
  • Будет работать быстрее за счет того, что не обрабатывает создание URL из черного списка
  • Осуществляет только разбор и создание URL, не трогая Session, Cookie, HTTP headers
  • Считаю, что в том расширении слишком много лишнего кода

Ответить