Шаблонизатор Blade: Создание пользовательского интерфейса
Студент освоит шаблонизатор Blade для создания переиспользуемых компонентов интерфейса (layouts) и вывода динамических данных на страницах.
<!-- resources/views/products/index.blade.php -->
<h1>Каталог товаров</h1>
@if(count($products) > 0)
<div class="grid">
@foreach($products as $product)
<div class="card">
<h3>{{ $product['name'] }}</h3>
<p>Цена: ${{ number_format($product['price'], 2) }}</p>
<button>В корзину</button>
</div>
@endforeach
</div>
@else
<p>Товары не найдены.</p>
@endif
<!-- resources/views/layouts/app.blade.php (Master Layout) -->
<!DOCTYPE html>
<html>
<head>
<title>@yield('title', 'Мой Магазин')</title>
</head>
<body>
<header>
<nav>Меню | <a href="{{ route('cart.index') }}">Корзина</a></nav>
</header>
<main>
@yield('content')
</main>
<footer>© 2023 Магазин</footer>
</body>
</html>
Флеш-карточки
Какая директива Blade используется для определения 'зоны' (плейсхолдера) в главном шаблоне (layout), куда будет вставлен контент из дочерних шаблонов?
Нажмите, чтобы увидеть ответ
@yield('имя_секции')
Нажмите, чтобы вернуться
Как в шаблоне Blade вывести переменную $htmlData, содержащую HTML-теги, чтобы они отрендерились в браузере, а не экранировались?
Нажмите, чтобы увидеть ответ
Использовать синтаксис {!! $htmlData !!}
Нажмите, чтобы вернуться
Задание
Сценарий: Создание страницы конкретного товара (Product Show Page). Используя методологию Chunking, разбейте задачу на шаги создания шаблонов.
- Убедиться в наличии главного шаблона layouts/app.blade.php с @yield('content').
- Создать файл resources/views/products/show.blade.php.
- В начале файла show.blade.php добавить директиву @extends('layouts.app').
- Открыть секцию @section('content').
- Использовать двойные фигурные скобки {{ $product->name }} для вывода безопасного текста и {!! $product->description !!} для вывода HTML-описания товара.
- Закрыть секцию директивой @endsection.