Урок 15: Расширения в Yii 2. Установка, создание, интеграция платежных систем.

В 15-ом уроке мы изучим расширения в Yii 2. Расширения это мощные инструменты, которые позволяют добавлять в ваш проект готовые решения без необходимости писать код с нуля. В этом уроке я расскажу, как находить, устанавливать и создавать расширения, а также покажу пример интеграции платежной системы.

Поиск и установка расширений через Composer

Почти все современные PHP-проекты, включая Yii 2, используют Composer для управления зависимостями. Composer это менеджер пакетов, который автоматизирует установку и обновление библиотек.

Как найти расширения?

Большинство расширений Yii 2 размещены на Packagist. Для поиска введите ключевые слова, например, yii2 payment или yii2 admin. Обращайте внимание на количество загрузок, дату последнего обновления и отзывы, это поможет выбрать надежное расширение.

Установка расширения
Допустим, мы хотим установить yii2-debug. В терминале выполните команду:

bash
composer require --prefer-dist yiisoft/yii2-debug

Composer загрузит пакет и добавит его в composer.json. После установки активируйте модуль в конфигурационном файле config/web.php:

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). С его помощью вы можете создавать роли, разрешения и назначать их пользователям.

Установка:

bash
composer require mdmsoft/yii2-admin "~2.0"

Добавьте модуль в config/web.php:

php
'modules' => [  
    'admin' => [  
        'class' => 'mdm\admin\Module',  
    ],  
],

Не забудьте настроить компонент authManager в том же файле:

php
'components' => [  
    'authManager' => [  
        'class' => 'yii\rbac\DbManager',  
    ],  
    // ...  
],

Практическая задача 2
Создайте роль admin с разрешением managePosts и назначьте её пользователю с ID=1. Проверьте, что пользователь может получить доступ к защищенному разделу.

Создание своего расширения

Иногда готовых решений недостаточно и вам нужно создать собственное расширение. Давайте разработаем простое расширение для генерации случайных чисел.

Структура расширения:

  1. Создайте папку vendor/max-gabov/random-generator.
  2. Внутри создайте файл RandomGenerator.php:
php
namespace max\gabov\random;  

class RandomGenerator {  
    public static function generate($min = 1, $max = 100) {  
        return rand($min, $max);  
    }  
}
  1. Добавьте файл composer.json для описания пакета:
json
{  
    "name": "max-gabov/random-generator",  
    "type": "yii2-extension",  
    "autoload": {  
        "psr-4": {  
            "max\\gabov\\random\\": ""  
        }  
    }  
}

Установка расширения в проект:
В composer.json вашего проекта добавьте:

json
"repositories": [  
    {  
        "type": "path",  
        "url": "../vendor/max-gabov/random-generator"  
    }  
],  
"require": {  
    "max-gabov/random-generator": "@dev"  
}

Выполните composer update, чтобы подключить расширение.

Использование:
Теперь в любом месте проекта можно вызвать:

php
echo \max\gabov\random\RandomGenerator::generate(1, 10);

Практическая задача 3
Создайте расширение для отправки email. Оно должно содержать метод send($to, $subject, $message), который использует Yii2-компонент mailer.

Пример: интеграция платежной системы

Рассмотрим интеграцию платежной системы через расширение yii2-mercado (условный пример).

Установка:

bash
composer require example/yii2-mercado

Настройка:
Добавьте ключи API в config/params.php:

php
return [  
    'mercadopago_public_key' => 'YOUR_PUBLIC_KEY',  
    'mercadopago_access_token' => 'YOUR_ACCESS_TOKEN',  
];

Создание платежа:
В контроллере:

php
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 от платежной системы:

php
public function actionPaymentCallback() {  
    $data = Yii::$app->request->post();  
    // Проверка подписи и обновление статуса заказа  
}

Практическая задача 4
Интегрируйте тестовую платежную систему (например, Stripe или PayPal). Реализуйте создание платежа и обработку успешного ответа.

Сегодня вы научились работать с расширениями Yii 2, устанавливать готовые решения через Composer, настраивать yii2-debug и yii2-admin, создавать свои пакеты и интегрировать платежные системы. Это важный шаг к созданию профессиональных приложений!

Хотите узнать больше? Полный курс по Yii 2 для начинающих.

Поделиться статьей:
Поддержать автора блога

Поддержка автора осуществляется с помощью специальной формы ниже, предоставленной сервисом «ЮMoney». Все платёжные операции выполняются на защищённой странице сервиса, что обеспечивает их корректность и полную безопасность.

Персональные рекомендации
Оставить комментарий