Как использовать пакеты Laravel в OctoberCms

У Laravel есть тысячи готовых пакетов. Так как OctoberCms построен на Laravel, то его пакеты мы тоже можем использовать. Использование пакетов аналогично, но их подключение требует некоторых действий.

Вы можете создать один плагин для всех пакетов, которые будете использовать в проекте или для каждого плагина проделывать одни и те же шаги.

Шаг 1. Composer'ом устанавливаем пакет Laravel

Переходим в папку с плагином в консоли и установим сам плагин. Я для примера буду устанавливать SDK для СДЕК, поэтому как сказано в инструкции буду устанавливать командой

composer require sanmai/cdek-sdk

Шаг 2. Правим plugin.php

В plugin.php доьавим функцию

public function bootPackages()
{
    // Get the namespace of the current plugin to use in accessing the Config of the plugin
    $pluginNamespace = str_replace('\\', '.', strtolower(__NAMESPACE__));
    
    // Instantiate the AliasLoader for any aliases that will be loaded
    $aliasLoader = AliasLoader::getInstance();
    
    // Get the packages to boot
    $packages = Config::get($pluginNamespace . '::packages');
    
    // Boot each package
    foreach ($packages as $name => $options) {
        // Setup the configuration for the package, pulling from this plugin's config
        if (!empty($options['config']) && !empty($options['config_namespace'])) {
            Config::set($options['config_namespace'], $options['config']);
        }
        
        // Register any Service Providers for the package
        if (!empty($options['providers'])) {
            foreach ($options['providers'] as $provider) {
                App::register($provider);
            }
        }
        
        // Register any Aliases for the package
        if (!empty($options['aliases'])) {
            foreach ($options['aliases'] as $alias => $path) {
                $aliasLoader->alias($alias, $path);
            }
        }
    }
}

Там же в boot() пропишем:

$this->bootPackages();

Тем самым задействуем новую функцию.

Ну и в шапку добавим:

use Config;
use Illuminate\Foundation\AliasLoader;

Шаг 3. Создаем config пакета

Далее создаем в папке плагина папку config, а в ней config.php чтобы получился путь config/config.php и вставляем туда код (пример):

<?php 
return [
    // This contains the Laravel Packages that you want this plugin to utilize listed under their package identifiers
    'packages' => [
        'sanmai/cdek-sdk' => [
            'config_namespace' => 'Cdek',
        ],
    ],
];

Вот и все готово! Теперь в своем плагине достаточно в шапке подключить пакет как это написано в самой инструкции к пакету. Например:

use CdekSDK\Requests;

или вот пример проще

use phpQuery;

Опубликовано 3 марта 2021 г. в категориях: October CMS Winter CMS

Если Вам необходимо внедрить данную разработку на свой проект, свяжитесь со мной, обсудим цену и срок.

Связаться со мной Fill 1