Завантаження публікації
ОГОЛОШЕННЯ

Перший модуль у Laravel: список → створення → редагування → видалення на прикладі Tags/Sections/Resources

Чіткий план для новачка: яку сутність обрати, як зробити таблицю міграцією, модель, маршрути, контролер, форми Blade, валідацію та безпечне видалення — без “магії” і зайвих ускладнень.


Максим Третяк
Максим Третяк
Газета Дейком | 30.12.2025, 16:00 GMT+3; 09:00 GMT-4

Невеликий модуль CRUD — це найкраще тренування, бо він проходить через весь “ланцюжок Laravel”: маршрут → контролер → FormRequest → модель/БД → Blade. Важливо, щоб модуль був не в критичному ядрі, щоб помилки не ламали сайт. Тому для навчання ідеальні довідники: Tags, Sections або Resources. Це сутності, які легко зрозуміти, але на них можна відпрацювати правильну структуру, доступи і якість коду.

Починаємо з вибору сутності і правил. Візьмемо “Tags” як найпростішу модель: тег має назву і slug. Назва показується людині, slug використовується в URL або в ідентифікації. Мінімальні правила: назва обов’язкова, slug обов’язковий і унікальний. Плюс бажано вести дату створення та оновлення. Цього достатньо, щоб відпрацювати реальний CRUD і валідацію.

Перший крок — міграція і структура таблиці. Ти створюєш таблицю tags з полями id, name, slug, created_at, updated_at. Для slug одразу ставиш унікальний індекс, бо це гарантія, що дубль не пролізе. Якщо ти плануєш “м’яке видалення”, додаєш deleted_at, але для першого модуля можна і без цього, щоб не перевантажувати новачка.

Другий крок — модель. Модель Tag описує, які поля можна масово заповнювати, і як нормалізувати slug. Тут важливо одразу закласти дисципліну: fillable тільки для name і slug, а slug приводиться до нормального вигляду (нижній регістр, дефіси). Це робить модуль безпечним і не дає “залити” зайві поля з request.

Третій крок — маршрути. Для CRUD модулів найкраще підходить resource route. Ти створюєш маршрути для index/create/store/edit/update/destroy. Одразу робиш їх у групі з префіксом, наприклад admin, щоб це було окремою зоною. Також одразу підключаєш middleware доступу, хоча б auth, щоб цей довідник не був відкритий випадковим людям.

Четвертий крок — контролер. Ти робиш resource controller, де кожен метод відповідає одному екрану або дії. index — показ списку з пошуком і пагінацією. create — форма створення. store — збереження. edit — форма редагування. update — оновлення. destroy — видалення. Це стандарт, який потім повторюється у всіх довідниках і адмінських модулях.

П’ятий крок — валідація через FormRequest. Це важливо: правила не мають жити в контролері. Для створення ти перевіряєш, що name заповнене і не надто довге, slug заповнене і унікальне. Для оновлення — те саме, але унікальність slug перевіряється з ігноруванням поточного запису, інакше редагування буде завжди падати. Саме тут новачок вчиться робити “правильно”, а не “аби працювало”.

Шостий крок — Blade сторінки і простий UI. Для модуля тобі потрібні три екрани: список, створення, редагування. Видалення — це кнопка зі списку. Список має мати поле пошуку і таблицю з колонками: назва, slug, дії. Внизу — пагінація, і важливо зберігати параметри пошуку в query string. Форми create/edit мають бути однаковими, тому поля форми краще винести в один partial і підключати в обох сторінках.

Сьомий крок — UX: old() і errors. Якщо валідація падає, користувач не має втрачати введені дані. Значення поля береться як old('name'), а для edit — old('name', $tag->name). Помилки показуються біля поля. Плюс після успішного збереження ти робиш redirect на список і показуєш flash-повідомлення “Збережено”. Це дрібні речі, але вони відрізняють “сирий модуль” від нормальної адмінки.

Восьмий крок — видалення. Для видалення ти робиш кнопку в таблиці, але форма повинна відправляти DELETE-запит, і в ній має бути CSRF. Новачки часто роблять видалення через GET — так робити не можна. Мінімальний стандарт: підтвердження (хоча б просте confirm), DELETE метод, і після видалення редирект назад на список з повідомленням.

Дев’ятий крок — захист від “поломок даних”. Навіть у простому довіднику важливо подумати: чи можна видаляти тег, якщо він уже прив’язаний до новин. Якщо це tags з belongsToMany, то перед видаленням варто або відв’язати зв’язки, або заборонити видалення і показати зрозуміле повідомлення. Це якраз навчальний момент: у реальному проєкті дані пов’язані, і “просто delete” інколи ламає логіку.

Де тут найбільша цінність для навчання. У тому, що ти один раз проходиш повний цикл: проєктування таблиці з індексами, безпечна модель, маршрути, стандартний контролер, FormRequest, UI з формами, правильні HTTP-методи, flash-результати, пагінація і query string. Далі ти можеш замінити “Tags” на “Sections” або “Resources” і повторити те саме, лише з кількома додатковими полями і зв’язками.

Висновок: невеликий CRUD-модуль — це тренажер, який дає реальне вміння робити фічі в Laravel, а не просто “розуміти теорію”. Якщо ти зробиш його за стандартом — ресурсні маршрути, тонкий контролер, FormRequest, чистий Blade з old()/errors і правильним видаленням — то наступні модулі будуть додаватися швидко, прогнозовано і без постійних багів.


Максим Третяк — Кореспондент, який спеціалізується на суспільно важливих темах, пише про політику, фінансові ринки та економіку. Він проживає та працює в Україні.

Цей матеріал є частиною розгорнутої теми: Web-програмування, яка охоплює численні цікаві аспекти цієї події. Газета «Дейком» ретельно відстежує події, проводячи перевірку джерел та інформації, щоб забезпечити нашим читачам найбільш точне та актуальне інформування.

Цей матеріал опубліковано 30.12.2025 року о 16:00 GMT+3 Київ; 09:00 GMT-4 Вашингтон, розділ: Освіта, із заголовком: "Перший модуль у Laravel: список → створення → редагування → видалення на прикладі Tags/Sections/Resources". Якщо в публікації з'являться зміни, про це буде зазначено та описано у кінці публікації.

Читайте щоденну газету та загальну стрічку новин газети Дейком, яка поєднує багато цікавого в понад 40 розділах з усіх куточків світу.


Save
ОГОЛОШЕННЯ

Новини, які можуть Вас зацікавити:

Штатні та позаштатні журналісти газети «Дейком» щодня готують сотні публікацій, щоб читачі отримували найоперативнішу, перевірену й глибоку інформацію. Ми працюємо для тих, хто хоче розуміти суть подій, бачити широку картину та бути на крок попереду.

Останні новини

Вибір редакції