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

Blade-шаблони для CRUD: як зробити index/create/edit і flash-повідомлення по-людськи

Практична структура Blade для адмінки: сторінка списку з пошуком і пагінацією, форма створення та редагування з помилками, і flash-повідомлення “успішно” без дублювання коду.


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

Коли ти робиш перший модуль (Tags/Sections/Resources), Blade-шаблони — це те, що перетворює “дані в базі” на реальний інтерфейс. Мінімальний набір завжди однаковий: index для списку, create для створення, edit для редагування. Плюс обов’язково flash-повідомлення, щоб користувач бачив результат дії. Якщо одразу закласти стандарт, то наступні модулі робитимуться швидко і однаково, без копіпасту і хаосу.

Почни з правильної структури папок. Для кожної сутності роби окрему папку у resources/views/admin/. Наприклад: resources/views/admin/tags/index.blade.php, create.blade.php, edit.blade.php і один partial для полів — form.blade.php. Це дисципліна, яка потім економить години: ти завжди знаєш, де лежить потрібна сторінка, і не плутаєш шаблони різних модулів.

Далі потрібен базовий layout адмінки. Він має містити загальний контейнер, заголовок сторінки, місце під контент і місце під flash-повідомлення. Важливо: flash краще вивести в layout або в окремому partial, щоб не дублювати на кожній сторінці. Тоді будь-який редирект із повідомленням буде показаний автоматично.

Flash-повідомлення — це короткий текст, який з’являється після дії (створив/оновив/видалив). У Laravel flash живе в сесії один запит: ти робиш redirect і додаєш session()->flash(...) або ->with(...). У Blade ти перевіряєш, чи є повідомлення, і показуєш його в одному місці. Мінімальний стандарт: окремо для успіху, для помилки, і бажано для попередження.

Правильна логіка така: після store/update/destroy контролер редиректить на index і додає flash. Наприклад “Запис створено”, “Зміни збережено”, “Запис видалено”. На create/edit flash зазвичай не потрібен, бо ці сторінки — форма, але загальний блок у layout не заважає і дозволяє показувати будь-які системні повідомлення.

Тепер index.blade.php. Це сторінка списку, і вона має бути максимально практичною. Вгорі — заголовок і кнопка “Створити”. Нижче — блок фільтрів або пошуку (на старті достатньо одного поля search). Потім таблиця: колонки з основними полями (name, slug, updated_at) і колонка “Дії”. Внизу — пагінація. Якщо ти зробиш це один раз акуратно, ти просто копіюватимеш структуру для наступних довідників.

У index важливо тримати стан фільтрів. Якщо пошук відправляється методом GET, значення пошуку має братися з request('search') і підставлятися назад у input. Тоді користувач бачить, що фільтр активний. Плюс пагінація має зберігати query string, інакше на сторінці 2 пошук “злетить”. Це один із найбільш частих “чому воно не працює” у новачків.

У колонці “Дії” мінімум дві кнопки: “Редагувати” і “Видалити”. Видалення має бути не посиланням, а формою з DELETE-методом і CSRF, інакше ти порушуєш HTTP-стандарт і ризикуєш безпекою. Також варто додати підтвердження видалення, щоб випадковий клік не зносив дані.

Далі create.blade.php. Це сторінка з формою створення. Вона повинна бути короткою: заголовок, кнопка “Назад до списку”, і форма. У формі обов’язково @csrf, а method — POST (звичайний). Поля форми ти не пишеш руками заново в create та edit — ти виносиш їх в form.blade.php. Це ключова дисципліна: один набір полів, дві сторінки, різний лише action і метод.

Потім edit.blade.php. Вона схожа на create, але action веде на update, і додається @method('PUT') (або PATCH). Поля ті самі, але значення беруться як old('field', $model->field). Це дає правильну поведінку: якщо валідація впала — користувач не втратив введене, якщо просто відкрив редагування — бачить дані з бази.

Тепер про form.blade.php — це місце, де ти робиш форму “професійною”. Кожне поле має label, input/textarea, і місце під помилку. Помилки виводяться з $errors: якщо поле має помилку — показати текст і підсвітити поле. Це дрібниця, але вона відразу робить форму зрозумілою. Плюс це привчає новачка до стандартної зв’язки FormRequest → errors → UI.

Окремо варто зробити частину для “глобальних” помилок — наприклад, якщо валідація повернула кілька помилок, можна показати зверху маленький блок зі списком. Але не обов’язково. Для старту достатньо помилок біля полів, бо так користувач не губиться.

Щоб завершити цикл, ти маєш узгодити все з named routes. У Blade не пишеш “/admin/tags/…” руками, ти генеруєш URL через route('admin.tags.index'), route('admin.tags.create'), route('admin.tags.store'), route('admin.tags.update', $tag). Це дає гарантію, що якщо URL зміниться, шаблони не посипляться.

Практичний стандарт для flash. Краще мати один partial, наприклад resources/views/admin/_flash.blade.php, який підхоплює session('success'), session('error'), session('warning'). І в layout підключати його один раз. Тоді всі контролери просто ставлять повідомлення через ->with('success', '...'), а інтерфейс автоматично показує його на наступній сторінці.

Висновок: index/create/edit — це ядро будь-якого CRUD-модуля, і його потрібно робити як шаблон, який ти потім повториш десятки разів. index — список з пошуком, таблицею і пагінацією; create/edit — дві сторінки, що використовують один form partial; flash-повідомлення — один блок у layout, який показує результат дії. Якщо ти закладеш це стандартом зараз, далі ти будеш будувати адмінку не “з нуля кожного разу”, а як конструктор.


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

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

Цей матеріал опубліковано 30.12.2025 року о 17:00 GMT+3 Київ; 10:00 GMT-4 Вашингтон, розділ: Освіта, із заголовком: "Blade-шаблони для CRUD: як зробити index/create/edit і flash-повідомлення по-людськи". Якщо в публікації з'являться зміни, про це буде зазначено та описано у кінці публікації.

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


Save
ОГОЛОШЕННЯ

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

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

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

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