Как в Yii2 установить расширение без composer вручную.
  • 24

Установка расширения Yii2 без composer вручную.

Автор: admin | 04 ноября (Пн.) 2019г. в 14ч.36м.

Зачем подключать расширение yii2 без composer.

Очевидно, что для установки зависимостей в yii2 лучше всего использовать composer. Но как быть, если сайт размещен на простом хостинге, где нет возможности устанавливать нужные пакеты с помощью composer из коммандной строки, а при этом необходимо установить какой-нибуть виджет или любой нужный пакет в yii2 и пользоваться им в коде? В таком случае приходится подключать нужные расширения и их зависимости вручную. 

Рассмотрим шаги для подключения расширения в yii2.

Шаги для подключения расширения в yii2 вручную.

  1. Скачиваем архив расширения с github или другого хранилища.
  2. Размещаем yii2 пакет в папке vendor проекта
  3. Правим файл vendor/yiisoft/extensions.php
  4. Правим файл vendor/composer/autoload_psr4.php
  5. Пользуемся расширением в проекте

Скачиваем архив расширения с github или другого хранилища.

Нужно помнить, что помимо самого расширения могут понадобиться установить также его зависимости. Например, нужно скачать с github виджет. Для того, чтобы посмотреть какие еще зависимости установить, посмотрим файл composer.json. Там, в секции "require" перечислены все необходимые для работы зависимости. Эти зависимости также нужно скачать и установить в yii2.

Размещаем yii2 пакет в папке vendor проекта.

Нужно разместить пакет в папке vendor в подпапке с именем пользователя гитхаб репозитория. Например, скачиваем архив виджета с репозитория гитхаб coderius/yii2-smooth-scroll .Распаковываем архив и кладем папку с виджетом yii2-smooth-scroll в папку vendor/coderius. Если вендора нет - создаем.

Правим файл vendor/yiisoft/extensions.php

Теперь нужно добавить в файл extensions.php в массив новый элемент такого вида:
<?php

$vendorDir = dirname(__DIR__);

return array (

...


'coderius/yii2-smooth-scroll' => 
  array (
    'name' => 'coderius/yii2-smooth-scroll',
    'version' => '1.0.0.0',
    'alias' => 
    array (
      '@coderius/smoothScroll' => $vendorDir . '/coderius/yii2-smooth-scroll/src',
    ),
  ),​

);
В ключе alias размещен путь к расширению. В файле composer.json расширения алиас можно посмотреть в секции psr-4:
"autoload": {
        "psr-4": {
            "coderius\\smoothScroll\\": "src/"
        }
    },​

Правим файл vendor/composer/autoload_psr4.php

Остается добавить коррективы в файл автозагрузки composer, расположенному по пути vendor/composer/autoload_psr4.php :
<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(

...

'coderius\\smoothScroll\\' => array($vendorDir . '/coderius/yii2-smooth-scroll/src'),

...
);​

Пользуемся расширением в проекте.

Теперь расширение добавлено в автозагрузку yii2 и композера и можно его подключить в коде проекта. Например в файле видов:
<?php echo \coderius\smoothScroll\SmoothScroll::widget([]); ?>

Не забываем устанавливать необходимые для пакета зависимости, например скрипты и стили в папку vendor/npm-asset

Установленные yii2 пакеты с помощью composer делают все изменения в файлах автозагрузки автоматически. В yii2 используется плагин композера yii2-composer, который также организовывает записи алиасов пакетов в файл extensions.php . Что такое плагин для composer можно почитать в оф. документации тут.

Читайте также из этой серии:

  • 1.Установка расширения Yii2 без composer вручную.

Приветствую!

Меня зовут Сергей. Я - автор этого блога.

Если Вам был полезен материал на моем сайте, поддержите пожалуйста мой проект, чтобы о нем узнали другие люди - кликните plizz :) на иконку в соц. сети, чтобы поделиться материалом с другими.