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

Blade у Laravel: layout, sections, components і partials — як зібрати простий UI з формами

Пояснюємо для новачка, як працює Blade: з чого складається сторінка, як не копіювати однаковий HTML, як будувати форми правильно, показувати помилки та зберігати введені дані.


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

Blade — це шаблонізатор Laravel, який формує HTML-сторінки. Якщо коротко: контролер готує дані, Blade показує їх користувачу. У Blade не потрібно вирішувати бізнес-логіку, робити SQL чи “вигадувати правила” — він має бути чистим шаром відображення. Коли новачок починає тягнути логіку в шаблон, система швидко перетворюється на хаос: важко знайти, де що змінюється, важко повторно використати блоки і ще важче дебажити.

Щоб сторінки були акуратні, Blade будується як конструктор з чотирьох базових понять: layout, sections, components і partials. Layout — це каркас сторінки, sections — місця, куди підставляється контент, components — повторно використовувані “деталі” з параметрами, partials — шматки HTML, які підключаються як вставки. Якщо ти один раз зрозумієш цей конструктор, ти зможеш робити адмінку і публічні сторінки швидко, не копіюючи одне і те саме по 20 файлах.

Layout — це “рамка” сторінки: шапка, футер, контейнер, підключені стилі та скрипти. Зазвичай у проєкті є базовий layout типу resources/views/layouts/app.blade.php або layouts/main.blade.php. Його сенс у тому, що структура сторінки однакова, а змінюється лише контент. У layout ти визначаєш точки вставки, і саме тут з’являється @yield або @stack для стилів і скриптів.

Sections — це контентні блоки, які “вкладаються” у layout. Коли ти створюєш сторінку, ти пишеш @extends('layouts.main'), а далі визначаєш @section('content') ... @endsection. Це означає: “візьми рамку і встав сюди мій контент”. Так ти отримуєш єдину структуру сайту і не повторюєш шапку, меню і базову розмітку в кожному файлі.

Окремо варто зрозуміти різницю між @section і @push. @section — це заповнення конкретного слота, наприклад контенту сторінки. @push — це накопичення стилів або скриптів у стек, щоб layout міг їх вивести в потрібному місці. Це корисно, коли сторінці потрібен свій маленький скрипт або стиль, але ти не хочеш ламати глобальний layout.

Partials — це прості вставки. Якщо ти бачиш, що один і той самий HTML повторюється на кількох сторінках, ти виносиш його в partial і підключаєш через @include. Типові partials — таблиця списку, рядок таблиці, блок фільтрів, панель кнопок, повідомлення про успіх. Це найшвидший спосіб прибрати копіпаст, коли блок не потребує складних параметрів.

Components — це більш “дорослий” інструмент повторного використання, бо компонент може приймати параметри. Наприклад, кнопка може мати текст, іконку, колір, стан “disabled”. Поле вводу може мати label, name, value, помилку і підказку. Компоненти особливо вигідні в формах: ти перестаєш писати 20 разів однакову верстку input-ів, а починаєш збирати форму як конструктор із готових деталей.

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

Тепер про простий UI з формами, бо саме тут новачки найчастіше “вмирають”. Форма в HTML — це тег

, який відправляє дані на певний маршрут. У Laravel, якщо це POST/PUT/PATCH/DELETE, тобі майже завжди потрібен CSRF-токен. Тому правило номер один: у кожній Blade-формі для запису має бути @csrf. Без цього ти отримаєш 419 і почнеш думати, що “Laravel зламався”.

Друге правило: форма має відповідати методу маршруту. Якщо ти створюєш запис — це POST. Якщо оновлюєш — це PUT або PATCH. В HTML напряму PUT/PATCH не відправиш, тому Laravel використовує “підміну методу” через приховане поле. У Blade це робиться директивою @method('PUT') або @method('PATCH'). Якщо ти це не поставиш — запит піде як POST, і маршрут може не співпасти.

Третє правило: ти завжди показуєш помилки валідації і повертаєш введені дані. Laravel стандартно редиректить назад з помилками і “старими” даними. У Blade ти підтягуєш значення через old('field') для create-форм, а для edit-форм робиш пріоритет так: якщо є old — показати old, якщо нема — показати значення з моделі. Це критично для UX: користувач не повинен заново набирати 20 полів через одну помилку.

Четверте правило: форму треба робити однаковою для create і edit. Не копіювати два файли, а винести поля у partial або компонент. Тоді у тебе один блок “поля форми”, а сторінки create/edit лише обгортають його в і підставляють різні action та method. Це не “красиво”, це практично: менше багів і менше розсинхрону полів.

П’яте правило: повідомлення про успіх робляться через flash-сесію, і це теж частина UI. Після збереження контролер зазвичай робить redirect і додає flash “Saved”. На сторінці списку ти виводиш цей flash один раз. Це дрібниця, але саме такі дрібниці роблять адмінку “живою” і зрозумілою.

Щоб UI був читабельним, важливо дисциплінувати Blade-логіку. У шаблоні допускається проста логіка відображення: показати/сховати блок, відмалювати умовний клас, пройтися циклом. Але коли в Blade з’являються складні умови з кількома правилами, або тим більше запити до бази — це сигнал, що ти тягнеш логіку не туди. Правильний рух: готувати дані в контролері/сервісі, а в Blade лише відображати.

Під кінець ти маєш зібрати у голові чітку схему. Layout дає рамку, sections вставляють контент, partials прибирають копіпаст, components дають параметризовані елементи, а форми працюють через @csrf, правильний метод, old() і показ errors. Це мінімальний стандарт, який дозволяє робити акуратні адмінські сторінки і не потонути в дублюванні.

Висновок: Blade — це про структуру і повторне використання, а не про “верстку в кожному файлі з нуля”. Якщо ти з першого місяця робиш layout, винесені partials/components і правильні форми з помилками та old-даними, ти швидко почнеш робити UI впевнено. І головне — твої сторінки не будуть розвалюватися при кожному додаванні нового поля або нового статусу.


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

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

Цей матеріал опубліковано 28.12.2025 року о 15:00 GMT+3 Київ; 08:00 GMT-4 Вашингтон, розділ: Освіта, із заголовком: "Blade у Laravel: layout, sections, components і partials — як зібрати простий UI з формами". Якщо в публікації з'являться зміни, про це буде зазначено та описано у кінці публікації.

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


Save
ОГОЛОШЕННЯ

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

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

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

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