Установка composer
Для начала необходимо установить сам компосер. Если у вас ОС windows и opsenServer, то в нем уже компосер установлен и готов к работе, если же нет, то устанавливаем его как описано здесь: Установка Composer на Windows. Если же вы используете linux, то вам сюда: Установка composer глобально для Linux/Unix/OSX
Настраиваем автозагрузку пакетов для Yii Framrwork
После или перед тем как вы загрузите требуемый вам и вашему проекту пакет (пакеты) нужно обеспечить автозагрузку пакета (пакетов) в проекте. Так как composer будет складывать все пакеты в папку /vendor необходимо включить эту папку в автозагрузку. Для этого необходимо внести некоторые изменения в код Yii Framework, а именно добавить код:
require __DIR__ . '/vendor/autoload.php';
В следующие файлы: index.php, protected/yiic.php, protected/tests/bootstrap.php.
Есть также альтернативный метод подключения автозагрузки, в начале файла protected/config/main.php добавляем:
require_once( dirname(__FILE__) . '/../../vendor/autoload.php');
Скрываем файлы и папки composer'а от лишних глаз
Добавляем следующий код в корневой .htaccess чтобы запретить доступ к /vendor, composer.phar, composer.json, composer.lock и перенаправить запрос на index.php для этого добавляем следующий код (.htaccess):
RewriteEngine on RewriteCond %{REQUEST_FILENAME} vendor/ [OR] RewriteCond %{REQUEST_FILENAME} composer.phar [OR] RewriteCond %{REQUEST_FILENAME} composer.json [OR] RewriteCond %{REQUEST_FILENAME} composer.lock RewriteRule . index.php
Загружаем пакет с помощью composer
Для загрузки требуемого пакета выполняем команду (обычно эти команды описаны в инструкции к пакету):
php ./composer.phar require packegeName
или
composer require packegeName
Все, наслаждаемся работой Yii1 и composer.
Пример загрузки пакета через composer в Yii1 и работа с ним
Пример #1
И так, возьмем любой пакет для тестов, первое что мне попалось - это Endroid QR Code (https://packagist.org/packages/endroid/qrcode). Открываем консоль, переходим в корень проекта и выполняем команду установки:
composer require endroid/qrcode
Ждем пока все будет скачано, а затем открываем любое представление (view) или действие (action), добавляем код из инструкции:
<?php use Endroid\QrCode\ErrorCorrectionLevel; use Endroid\QrCode\LabelAlignment; use Endroid\QrCode\QrCode; use Symfony\Component\HttpFoundation\Response; $qrCode = new QrCode('Composer + Yii | Кодер.укр'); $qrCode->setSize(300); $qrCode ->setWriterByName('png') ->setMargin(10) ->setEncoding('UTF-8') ->setErrorCorrectionLevel(ErrorCorrectionLevel::LOW) ->setValidateResult(false); header('Content-Type: '.$qrCode->getContentType()); echo $qrCode->writeString(); $qrCode->writeFile(__DIR__.'/qrcode.png'); $response = new Response($qrCode->writeString(), Response::HTTP_OK, ['Content-Type' => $qrCode->getContentType()]);
И получаем рабочее расширение в нашем проекте на Yii Framework.
Пример #2
Для чистоты эксперимента возьмем еще один (второй попавшийся) пакет (https://github.com/dompdf/dompdf) и установим его:
composer require dompdf/dompdf
И заставим работать как и предыдущий. Открываем любое представление (view) или действие (action), добавляем код из инструкции:
<?php use Dompdf\Dompdf; $dompdf = new Dompdf(); $dompdf->loadHtml('Composer + Yii | Кодер.укр'); $dompdf->setPaper('A4', 'landscape'); $dompdf->render(); $dompdf->stream();
Запускаем и наслаждаемся)
Комментарии
У меня так только адекватно стало работать на Apache-2.4-x64
Ответить