РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
3 of 1392 menu

Директива @extends

Директива @extends в Blade-шаблонах Laravel служит для создания иерархии шаблонов. Она указывает, какой родительский макет должен быть расширен текущим шаблоном. Первым и единственным параметром передаётся путь к родительскому шаблону относительно папки resources/views. После использования директивы @extends, дочерний шаблон может определять секции с помощью @section, которые будут вставлены в соответствующие места родительского макета через @yield.

Синтаксис

@extends('parent.view') @section('content') Дочерний контент @endsection

Пример

Создадим родительский макет с основной структурой страницы:

<html> <head> <title>@yield('title', 'Default Title')</title> </head> <body> <header> @yield('header') </header> <main> @yield('content') </main> <footer> @yield('footer') </footer> </body> </html>

Теперь создадим дочерний шаблон, который расширяет этот макет:

@extends('layouts.app') @section('title', 'Home Page') @section('header') <h1>Welcome to the site</h1> @endsection @section('content') <p>This is the main content of the home page.</p> @endsection @section('footer') <p>© 2026 All rights reserved.</p> @endsection

Результат выполнения кода при рендеринге дочернего шаблона:

<html> <head> <title>Home Page</title> </head> <body> <header> <h1>Welcome to the site</h1> </header> <main> <p>This is the main content of the home page.</p> </main> <footer> <p>© 2026 All rights reserved.</p> </footer> </body> </html>

Пример

Использование @parent внутри секции для добавления контента к родительскому:

<html> <body> @section('sidebar') Default sidebar content @show <div class="content"> @yield('content') </div> </body> </html>

Дочерний шаблон, который расширяет базовый и добавляет контент к секции sidebar:

@extends('layouts.base') @section('sidebar') @parent <p>Additional sidebar content for profile page</p> @endsection @section('content') <h2>User Profile</h2> <p>Profile information goes here.</p> @endsection

Результат выполнения кода при рендеринге дочернего шаблона:

<html> <body> Default sidebar content <p>Additional sidebar content for profile page</p> <div class="content"> <h2>User Profile</h2> <p>Profile information goes here.</p> </div> </body> </html>

Пример

Использование нескольких уровней наследования шаблонов:

@extends('layouts.app') @section('header') <h1>Admin Panel</h1> @endsection @section('content') <div class="admin-content"> @yield('admin-content') </div> @endsection

Создадим шаблон для страницы управления пользователями:

@extends('layouts.admin') @section('title', 'User Management') @section('admin-content') <h2>Users List</h2> <ul> <li>User 1</li> <li>User 2</li> <li>User 3</li> </ul> @endsection

Результат выполнения кода при рендеринге шаблона admin/users:

<html> <head> <title>User Management</title> </head> <body> <header> <h1>Admin Panel</h1> </header> <main> <div class="admin-content"> <h2>Users List</h2> <ul> <li>User 1</li> <li>User 2</li> <li>User 3</li> </ul> </div> </main> <footer> <p>© 2026 All rights reserved.</p> </footer> </body> </html>

Смотрите также

  • директива @section,
    которая определяет секцию в дочернем шаблоне
  • директива @yield,
    которая выводит содержимое секции в родительском макете
  • директива @parent,
    которая позволяет добавить контент к родительской секции
  • директива @include,
    которая вставляет содержимое другого шаблона
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить