tags: - PHP - DLE - Плагин - Админка - разработка title: "Начало работы - DevCraft Admin" description: "Создание и структура модулей DevCraft Admin для DLE 20.0." keywords: "PHP, DLE, DevCraft, модуль, manifest, settings.schema, документация" author: "Maxim Harder" og:title: "Начало работы с модулями DevCraft" og:description: "Manifest, settings.schema.php, страницы, AJAX и install.xml." og:image: "https://devcraft.club/data/assets/logo_default/devcraftx2.png ⧉"
Начало работы с модулями DevCraft¶
Руководство для разработчиков плагинов на базе DevCraft Admin.
Для быстрого каркаса можно использовать генератор модулей; ниже — ручная сборка и обязательные артефакты.
1. Предварительные требования¶
- DLE 20.0, PHP 8.3
- Установленный DevCraft Admin ≥ 200.4.0
- PSR-4 autoload:
DevCraft\Modules\{Name}\→devcraft/src/modules/{Name}/ - После добавления файлов:
composer dump-autoloadвdevcraft/
2. Создание модуля¶
Вариант A: генератор¶
DevCraft Admin → Генератор модулей — создаёт каркас под devcraft/src/modules/{Name}/.
Вариант B: вручную¶
| Text Only | |
|---|---|
Точка входа DLE (отдельный плагин или общий архив):
| PHP | |
|---|---|
Файл: engine/inc/{mod}.php.
3. manifest.php¶
Обязательные блоки:
| Ключ | Назначение |
|---|---|
mod | Код в URL DLE (?mod=...) |
code | Код конфигурации JSON (devcraft/config/{code}.json) |
meta | name, version, description, icon, ссылки |
menu | Пункты меню через AdminLink::page(); для сателлитов — 5-й аргумент mod |
ajax | controller + methods → классы обработчиков (controller обычно admin) |
changelog | require changelog.data.php |
assets | JS/CSS модуля (опционально) |
Пример AJAX (все запросы идут на devcraft/ajax.php):
| PHP | |
|---|---|
Параметры запроса: mod, controller, method, user_hash, data.
DevCraft.Ajax.post(method, data) сам добавляет mod из атрибута body[data-mod] layout-а. Для сателлитов без mod сервер вернёт unknown_method (метод ищется в модуле devcraft).
4. settings.schema.php¶
Схема настроек через FormSchemaBuilder:
| PHP | |
|---|---|
- Файл конфигурации:
devcraft/config/{code}.json - Страница: класс
SettingsPage+ шаблонsettings.twigс{% include 'core/includes/form/settings_page.twig' %} - Сохранение:
SettingsHandlerили кастомный обработчик сSettingsFormService supplementFormData()— дополнительные данные для Twig
Кастомный SettingsHandler — для логики после сохранения (создание каталогов, .htaccess, внешние API).
5. changelog.data.php¶
Массив версий для страницы «История изменений»:
| PHP | |
|---|---|
6. Фильтры (опционально)¶
Для таблиц с фильтрацией — {Plugin}/Filter/{name}.filter.schema.php и FilterFormService (см. модуль Admin → логи: Admin/Filter/logs.filter.schema.php).
7. Страницы, AJAX, install.xml¶
Pages¶
Наследуйте AbstractPage, метод handle() возвращает ['view' => 'my_module/page.twig', 'data' => [...]].
AJAX¶
- Реализуйте
AjaxHandlerInterface - Возвращайте
JsonResponseилиFileResponse(скачивание файлов, DevCraft ≥ 200.4.0) - Загрузка на сервер:
UploadedFile+postMultipart - Не создавайте отдельные
engine/ajax/{mod}.php
install.xml¶
version,dleversion20.0needplugin: имя плагина-зависимости (DevCraft Admin)- Без патча
paths.php— autoload через Composer <notice>:composer dump-autoload, требования к DevCraft
Локализация¶
XLIFF: devcraft/locales/{locale}/{code}.xliff (Crowdin-совместимый путь).
См. также¶
- Создание CRUD-страницы — сквозной сценарий: Entity → Repository → список с фильтром → форма → Ajax → манифест → Twig
- Примеры Form — layout stack/tabs/accordion, все типы полей, filter schema
- Генератор модулей
- Composer-пакеты модулей
- Манифест модуля
- Точки входа
- ИИ-инструменты
- Конституция PHP