В 15-ом уроке мы изучим расширения в Yii 2. Расширения это мощные инструменты, которые позволяют добавлять в ваш проект готовые решения без необходимости писать код с нуля. В этом уроке я расскажу, как находить, устанавливать и создавать расширения, а также покажу пример интеграции платежной системы.
Поиск и установка расширений через Composer
Почти все современные PHP-проекты, включая Yii 2, используют Composer для управления зависимостями. Composer это менеджер пакетов, который автоматизирует установку и обновление библиотек.
Как найти расширения?
Большинство расширений Yii 2 размещены на Packagist. Для поиска введите ключевые слова, например, yii2 payment или yii2 admin. Обращайте внимание на количество загрузок, дату последнего обновления и отзывы, это поможет выбрать надежное расширение.
Установка расширения
Допустим, мы хотим установить yii2-debug. В терминале выполните команду:
composer require --prefer-dist yiisoft/yii2-debug
Composer загрузит пакет и добавит его в composer.json. После установки активируйте модуль в конфигурационном файле config/web.php:
'modules' => [ 'debug' => [ 'class' => 'yii\debug\Module', 'allowedIPs' => ['127.0.0.1', '::1'], // Доступ только с локального IP ], ],
Практическая задача 1
Установите расширение yii2-gii через Composer и настройте его для работы в вашем проекте. Проверьте, что генератор кода доступен по адресу /index.php?r=gii.
Популярные расширения: yii2-debug, yii2-admin
yii2-debug
Это расширение добавляет панель отладки в нижнюю часть страницы. Она показывает логи, SQL-запросы, время выполнения и другие метрики.
Настройка:
После установки (как в предыдущем разделе) убедитесь, что модуль активирован. Если вы работаете в режиме разработки (YII_DEBUG = true), панель появится автоматически.
Пример использования:
Откройте любую страницу вашего приложения. Внизу экрана вы увидите панель с вкладками:
- Логи — все сообщения, записанные через
Yii::info(),Yii::error()и т.д. - База данных — список выполненных SQL-запросов и их время выполнения.
yii2-admin
Расширение yii2-admin предоставляет готовую систему управления правами (RBAC). С его помощью вы можете создавать роли, разрешения и назначать их пользователям.
Установка:
composer require mdmsoft/yii2-admin "~2.0"
Добавьте модуль в config/web.php:
'modules' => [ 'admin' => [ 'class' => 'mdm\admin\Module', ], ],
Не забудьте настроить компонент authManager в том же файле:
'components' => [ 'authManager' => [ 'class' => 'yii\rbac\DbManager', ], // ... ],
Практическая задача 2
Создайте роль admin с разрешением managePosts и назначьте её пользователю с ID=1. Проверьте, что пользователь может получить доступ к защищенному разделу.
Создание своего расширения
Иногда готовых решений недостаточно и вам нужно создать собственное расширение. Давайте разработаем простое расширение для генерации случайных чисел.
Структура расширения:
- Создайте папку
vendor/max-gabov/random-generator. - Внутри создайте файл
RandomGenerator.php:
namespace max\gabov\random; class RandomGenerator { public static function generate($min = 1, $max = 100) { return rand($min, $max); } }
- Добавьте файл
composer.jsonдля описания пакета:
{ "name": "max-gabov/random-generator", "type": "yii2-extension", "autoload": { "psr-4": { "max\\gabov\\random\\": "" } } }
Установка расширения в проект:
В composer.json вашего проекта добавьте:
"repositories": [ { "type": "path", "url": "../vendor/max-gabov/random-generator" } ], "require": { "max-gabov/random-generator": "@dev" }
Выполните composer update, чтобы подключить расширение.
Использование:
Теперь в любом месте проекта можно вызвать:
echo \max\gabov\random\RandomGenerator::generate(1, 10);
Практическая задача 3
Создайте расширение для отправки email. Оно должно содержать метод send($to, $subject, $message), который использует Yii2-компонент mailer.
Пример: интеграция платежной системы
Рассмотрим интеграцию платежной системы через расширение yii2-mercado (условный пример).
Установка:
composer require example/yii2-mercado
Настройка:
Добавьте ключи API в config/params.php:
return [ 'mercadopago_public_key' => 'YOUR_PUBLIC_KEY', 'mercadopago_access_token' => 'YOUR_ACCESS_TOKEN', ];
Создание платежа:
В контроллере:
use example\mercadopago\MercadoPago; public function actionCreatePayment() { $mp = new MercadoPago(Yii::$app->params['mercadopago_access_token']); $payment = $mp->create_payment([ 'amount' => 100, 'description' => 'Покупка курса', ]); if ($payment['status'] == 'approved') { Yii::$app->session->setFlash('success', 'Платеж прошел!'); } return $this->render('payment', ['payment' => $payment]); }
Обработка уведомлений:
Создайте экшен для обработки callback от платежной системы:
public function actionPaymentCallback() { $data = Yii::$app->request->post(); // Проверка подписи и обновление статуса заказа }
Практическая задача 4
Интегрируйте тестовую платежную систему (например, Stripe или PayPal). Реализуйте создание платежа и обработку успешного ответа.
Сегодня вы научились работать с расширениями Yii 2, устанавливать готовые решения через Composer, настраивать yii2-debug и yii2-admin, создавать свои пакеты и интегрировать платежные системы. Это важный шаг к созданию профессиональных приложений!
Хотите узнать больше? Полный курс по Yii 2 для начинающих.
Поддержка автора осуществляется с помощью специальной формы ниже, предоставленной сервисом «ЮMoney». Все платёжные операции выполняются на защищённой странице сервиса, что обеспечивает их корректность и полную безопасность.


