Общее
Начало работы Окружение Работа с E-mail Адаптер Работа с обновлениями Роутер Api
Разработка
Модели Миграции Подсистемы Сервисные страницы
Настройки
Персонализация Стили
Тестирование
TDD
Пользователи
Пользователи
ECommerce
Заказы Корзина Профиль заказа Пункты выдачи
Специальность
Стажировка
  • 1 Введение
  • 2 Создание подсистемы
  • 3 Получить настройки подсистемы
arrow_back Подсистемы

Введение

Подсистема - самостоятельная логическая и функциональная группа, которая объединяет в себе набор модулей, моделей, объектов, обработчиков, сервисных страниц и т.п.

Каждая подсистема отображается в специальном виджете:

Реестр подсистем находится в папке:

/app/subsystems/

Файл реестра:

/app/subsystems/registry.php

В файле реестра указан массив подсистем и пути к ним:


<?php

return [
    [
        'path' => '/app/subsystems/Pages',
    ],
    [
        'path' => '/app/subsystems/Catalog',
    ],
    [
        'path' => '/app/subsystems/ECommerce',
    ],
    [
        'path' => '/app/subsystems/Users',
    ]
];

 

Устройство подсистемы на примере подсистемы Пользователи

Файл манифеста:

/app/subsystems/Users/manifest.php

Манифест предназначен для декларации подсистемы.

Массив shortcuts содержит в себе ярлыки. Ярлыки могут быть содержать в себе выпадающий список dropDown

Пример


<?php

return [
    'subsystem' => [
        'name' => [
            'ru' => 'Пользователи',
        ],
        'settingsBlock' => 'Users',
    ],
    'shortcuts' => [
        [
            'name' => [
                'ru' => 'Пользователи'
            ],
            'code' => 'users',
            'link' => '',
            'moduleCode' => 'Users',
            'blockCode' => 'Users',
            'window' => [
                'width' => 1200,
                'height' => 900,
            ]
        ],
        [
            'name' => [
                'ru' => 'Группы'
            ],
            'code' => 'usersGroups',
            'dropDown' =>
                [
                    [
                        'name' => [
                            'ru' => 'Группы пользователей'
                        ],
                        'link' => '',
                        'moduleCode' => 'Users',
                        'blockCode' => 'UsersGroups',
                        'window' => [
                            'width' => 1200,
                            'height' => 900,
                        ],
                    ],
                    [
                        'name' => [
                            'ru' => 'Уровни доступа'
                        ],
                        'link' => '',
                        'moduleCode' => 'Users',
                        'blockCode' => 'AccessLevels',
                        'window' => [
                            'width' => 1200,
                            'height' => 900,
                        ],
                    ]
                ]
        ],
    ]
];

Директория /app/subsystems/Users/shortcuts/icons/ - хранит в себе иконки ярлыков ( если они необходимы )

Название иконки должно совпадать с кодом ярлыка и быть в формате .svg

Создание подсистемы

К примеру, необходимо внедрить функционал генерации онлайн билетов, для того, чтобы сделать это более правильно, необходимо весь функционал работы с билетами как то сгруппировать, объединить.

Разберем пример создания подсистемы по примеру создания подсистемы Онлайн билеты

Как правило, у подсистемы есть основаня модель и множество других моделей. Так же, у подсистемы могут быть настройки, чтобы в дальнейшем ее гибко можно было конфигурировать.

И так, начнем с простого, создадим основную модель Билеты: 

  1. Откройте Разработчикам > Динамические модули
  2. Создайте модуль Билеты Tickets
  3. В модуле Билеты создайте блок Билеты Tickets
  4. Откройте Разработчикам > Динамические модули > Настройки
  5. Создайте блок Билеты Tickets
  6. Для наглядности, в настройки билетов добавьте поле с типом: Логические > Флаг ( Дублировать отправку по sms ) duplicate_sending_sms

После того, как базовая модель готово, нужно создать папку с подсистемой:

/app/subsystems/Tickets

Создайте файл манифеста /app/subsystems/Tickets/manifest.php

С содержимым:


<?php

return [
    'subsystem' => [
        'name' => [
            'ru' => 'Билеты',
        ],
        'settingsBlock' => 'Tickets',
    ],
    'shortcuts' => [
        [
            'name' => [
                'ru' => 'Билеты'
            ],
            'code' => 'tickets',
            'link' => '',
            'moduleCode' => 'Tickets',
            'blockCode' => 'Tickets',
            'window' => [
                'width' => 1200,
                'height' => 900,
            ]
        ]
    ]
];

Описание ключей:

subsystem Метаданные подсистемы
settingsBlock Код блока который отвечает за настройки ( его может и не быть )
shortcuts Массив ярлыков
shortcuts.item.name Название ярлыка
shortcuts.item.code Код ярлыка
shortcuts.item.link Ссылка. Если поле заполнена, то по клику будет переход по ссылке в новой вкладке
shortcuts.item.moduleCode Код модуля для которого создан ярлык ( если указана сылка, то указывать нет смысла )
shortcuts.item.blockCode Код блока для которого создан ярлык ( если указана сылка, то указывать нет смысла )
shortcuts.item.window Размеры окна, которе будет в которм будет открыт блок

 

Выпадающий список в ярлыке

Если вам нужно, чтобы по клику на ярлык, появился выпадающий список, то вы можете использовать следующую структуру:

cool Пример взят из подсистемы Пользователи


[
'name' => [
    'ru' => 'Группы'
],
'code' => 'usersGroups',
'dropDown' =>
    [
        [
            'name' => [
                'ru' => 'Группы пользователей'
            ],
            'link' => '',
            'moduleCode' => 'Users',
            'blockCode' => 'UsersGroups',
            'window' => [
                'width' => 1200,
                'height' => 900,
            ],
        ],
        [
            'name' => [
                'ru' => 'Уровни доступа'
            ],
            'link' => '',
            'moduleCode' => 'Users',
            'blockCode' => 'AccessLevels',
            'window' => [
                'width' => 1200,
                'height' => 900,
            ],
        ]
    ]
]

Иконки для ярлыков

Создайте директорию:  /app/subsystems/Tickets/shortcuts/icons/

Разместить в папку с иконками: tickets.svg скачать иконку

 

Проверьте, виджет подсистемы должен появится у вас в панели.

Получить настройки подсистемы

use Prologue\Framework\System\Subsystems;

Метод получает настройки для указанной подсистемы.

Параметры

subsystem Код подсистемы

 


$setting = Subsystems::getSettings('ECommerce');