Директива parent
Директива parent применяется в дочерних шаблонах Blade
внутри секций, определённых с помощью директивы section.
Она позволяет добавить содержимое в конец или начало родительской
секции, не заменяя её полностью. Если дочерний шаблон определяет
секцию, которая уже существует в родителе, содержимое родительской
секции будет заменено. Директива parent даёт возможность
получить доступ к оригинальному содержимому родительской секции
и дополнить его.
Синтаксис
@parent
Пример
Давайте создадим базовый макет с секцией content:
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
@yield('content')
</body>
</html>
Теперь расширим этот макет в дочернем шаблоне:
@extends('layout')
@section('content')
<h1>Заголовок страницы</h1>
<p>Основное содержимое страницы.</p>
@endsection
Результат выполнения кода:
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
<h1>Заголовок страницы</h1>
<p>Основное содержимое страницы.</p>
</body>
</html>
Пример
Давайте используем директиву parent для добавления
содержимого к родительской секции:
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
@section('content')
<p>Это содержимое по умолчанию.</p>
@show
</body>
</html>
Теперь в дочернем шаблоне добавим содержимое к родительской секции:
@extends('layout')
@section('content')
<h1>Заголовок страницы</h1>
@parent
<p>Дополнительное содержимое.</p>
@endsection
Результат выполнения кода:
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
<h1>Заголовок страницы</h1>
<p>Это содержимое по умолчанию.</p>
<p>Дополнительное содержимое.</p>
</body>
</html>
Пример
Давайте используем директиву parent для добавления
содержимого в начало секции:
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
@section('content')
<p>Основное содержимое.</p>
@show
</body>
</html>
В дочернем шаблоне добавим содержимое в начало родительской секции:
@extends('layout')
@section('content')
<p>Дополнительное содержимое в начале.</p>
@parent
@endsection
Результат выполнения кода:
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
<p>Дополнительное содержимое в начале.</p>
<p>Основное содержимое.</p>
</body>
</html>
Пример
Давайте используем директиву parent в многоуровневом
наследовании шаблонов:
<html>
<head>
<title>Базовый сайт</title>
</head>
<body>
@section('content')
<p>Базовое содержимое.</p>
@show
</body>
</html>
Создадим промежуточный шаблон:
@extends('base')
@section('content')
<p>Промежуточное содержимое.</p>
@parent
@endsection
Создадим дочерний шаблон:
@extends('middle')
@section('content')
<p>Дочернее содержимое.</p>
@parent
@endsection
Результат выполнения кода:
<html>
<head>
<title>Базовый сайт</title>
</head>
<body>
<p>Дочернее содержимое.</p>
<p>Промежуточное содержимое.</p>
<p>Базовое содержимое.</p>
</body>
</html>