Під час створення плагіна для October CMS через Builder багато розробників впираються в обмеження: складні відносини Many-to-Many не генеруються, кастомні віджети потребують ручного втручання, а згенерований код часто містить N+1 запити. Наприклад, клієнт хотів інтернет-магазин з фільтрами за категоріями, але після генерації Builder виявилося, що кожна сторінка товару робить 50 запитів до БД через відсутність eager loading. Ми доопрацювали код, скоротивши запити до 5, і сторінка почала завантажуватися за 0.3 сек замість 4 сек. Ми стикалися з цим десятки разів і виробили рецепт: Builder для скелета + ручне доопрацювання під продакшен. Налаштовуємо Builder Plugin і доводимо результат до production-ready коду. Ми виконали понад 50 проєктів, заощадивши клієнтам до 60% бюджету порівняно з ручною розробкою з нуля.
Налаштування Builder Plugin під продакшен
Builder — чудовий інструмент для швидкого прототипування. Він генерує міграції, моделі та контролери за 2–4 години. Але щоб код працював у продакшені, потрібно доопрацювати валідацію, оптимізувати запити та додати кастомну логіку. Ми виконуємо ці кроки вручну, використовуючи досвід роботи з October CMS.
Що можна зробити з Builder?
| Функція | Опис | Примітка |
|---|---|---|
| Database | Візуальний конструктор таблиць | Підтримує всі типи стовпців Laravel, індекси, зовнішні ключі |
| Models | Створення Eloquent-моделей | Налаштування полів, валідації, відносин, scope-методів |
| Backend Controllers | CRUD-контролери | Поведінки list, form, reorder |
| Menus | Навігація в backend | Додавання пунктів меню |
| Versions | Керування версіями | Міграції та версіонування плагіна |
Причини N+1 запитів у Builder
Під час генерації реляцій Builder не додає жадібне завантаження. Наприклад, список товарів із категоріями виконає запит на кожну категорію. Це різко сповільнює сторінку. Ми виправляємо це, додаючи with() у моделі та використовуючи eager loading. У результаті кількість запитів скорочується в 5–10 разів, а швидкість завантаження сторінки збільшується на 80%.
Як уникнути N+1 запитів?
Щоб уникнути N+1, на етапі доопрацювання додаємо жадібне завантаження в усі моделі. Для списків використовуємо with() у контролерах, а в моделях — глобальні scope-методи. Наприклад, у моделі Product додаємо protected $with = ['category']. Це скорочує кількість запитів з 50 до 5 і прискорює завантаження до 0.3 сек.
Як доопрацювати плагін після генерації?
Після генерації скелета ми виконуємо такі кроки:
- Перевіряємо міграції та додаємо складені індекси для прискорення запитів.
- Налаштовуємо валідацію з урахуванням бізнес-логіки (наприклад, перевірка унікальності складених полів).
- Реалізуємо кастомні scope-методи для фільтрації та сортування (наприклад,
scopePopular,scopeByCategory). - Додаємо відносини Many-to-Many через проміжні таблиці з додатковими полями (pivot).
- Оптимізуємо запити: виправляємо N+1 за допомогою
with(), використовуємо жадібне завантаження для списків. - Додаємо кастомні поведінки, наприклад для масового імпорту CSV.
Приклад: створення плагіна через Builder
- Перейти в Backend → Builder → Вибрати плагін
- Database → Add Table — вказати назву, додати стовпці
- Models → Add Model — вибрати таблицю, налаштувати
$fillable, правила - Controllers → Add Controller — вибрати модель, налаштувати list columns і form fields через YAML
Згенерований columns.yaml:
# models/Product/columns.yaml columns: name: label: Назва searchable: true sortable: true price: label: Ціна type: number sortable: true is_active: label: Активний type: switch created_at: label: Створено type: timesince fields.yaml:
# models/Product/fields.yaml fields: name: label: Назва type: text required: true span: left slug: label: Slug type: text preset: field: name type: slug span: right price: label: Ціна (грн.) type: number span: left description: label: Опис type: richeditor size: large image: label: Зображення type: fileupload mode: image imageWidth: 1200 imageHeight: 630 tabs: fields: seo_title: tab: SEO label: SEO заголовок type: text seo_description: tab: SEO label: SEO опис type: textarea Порівняння: Builder vs ручна розробка
| Критерій | Builder | Ручна розробка |
|---|---|---|
| Швидкість створення CRUD | 2–4 години | 1–2 дні |
| Гнучкість | Обмежена | Повна |
| Якість коду | Потребує доопрацювання | Висока |
| Підтримка складної логіки | Ні | Так |
Builder прискорює створення CRUD-модулів у 3–5 разів порівняно з ручною розробкою, але фінальний код потребує доопрацювання. Наша команда допомагає пройти цей шлях без помилок.
Технічні деталі налаштування
Налаштування включає конфігурацію YAML-файлів моделей та контролерів, додавання кастомних scope-методів та оптимізацію запитів. Наприклад, для моделі Product ми додаємо scopePublished та scopeInStock. Також налаштовуємо дозволи та меню для backend.
Процес роботи
- Аналітика — вивчаємо вимоги до плагіна.
- Встановлення та налаштування Builder — конфігурація середовища.
- Генерація скелета — створення таблиць, моделей, контролерів.
- Доопрацювання коду — валідація, кастомні методи, оптимізація.
- Тестування — перевірка на відповідність вимогам.
- Деплой — викочування на сервер.
Що входить у роботу
- Встановлення та налаштування Builder Plugin.
- Створення до 5 моделей з формами та списками.
- Налаштування меню та дозволів.
- Доопрацювання коду під продакшен (до 20 годин).
- Оптимізація швидкості завантаження backend-сторінок.
- Документація по плагіну.
- Консультація щодо подальшої підтримки.
Терміни та вартість
Терміни: від 3 до 7 робочих днів залежно від складності. Вартість розраховується індивідуально — пишіть для оцінки. Ми гарантуємо економію бюджету до 60% порівняно з ручною розробкою.
Чому обирають нас?
Досвід роботи з October CMS — значний. Виконали понад 50 проєктів. Надаємо гарантію на налаштування та доопрацювання.
Офіційна документація October CMS: https://octobercms.com/docs
Зв'яжіться з нами для консультації — отримайте оцінку вашого проєкту та готовий плагін із доопрацьованим кодом. Замовте налаштування Builder Plugin і отримайте готовий плагін з оптимізованим кодом.







