Вывод динамического контента
В вид (представлении) обычно размещают не весь макет сайта, а только его изменяющийся контент. А макет сайта выносят в отдельный файл, в который автоматически в специальное место будет вставляться динамическая часть страницы. Разместим код общего макета сайта в следующем файле:
resources/views/components/layout.blade.php<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
тут подключается контент
</body>
</html>
В этом файле будет доступна специальная переменная $slot
, которая указывает место вставки контента:
resources/views/components/layout.blade.php<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
{{ $slot }}
</body>
</html>
Исправим вид (представление) контроллера, с помощью специального тега <x-layout>
обернем текст нашего вида (представления). Название тега <x-layout>
взято из названия файла о котором говорилось выше. Содержимое этого тега и будет вставлено в макет сайта вместо переменной $slot
:
resources/views/post/show.blade.php<x-layout>
page content
</x-layout>
Контент из переменной контроллера
Пусть теперь текст контента не прописан жестко в виде (представлении), а передается из контроллера:
app/Http/Controllers/PostController.php<?php
class PostController extends Controller
{
public function show()
{
return view('post.show', [
'text' => 'page content',
]);
}
}
Давайте выведем переданный текст в виде (представлении):
resources/views/post/show.blade.php<x-layout>
<x-slot:title>
page title
</x-slot>
{{ $text }}
</x-layout>