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

Директива yield

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

Синтаксис

@yield('section_name') @yield('section_name', 'default content')

Пример

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

<html> <head> <title>@yield('title', 'Default Title')</title> </head> <body> <div class="header"> @yield('header') </div> <div class="content"> @yield('content') </div> <div class="footer"> @yield('footer', 'Default Footer') </div> </body> </html>

В этом примере базовый шаблон содержит три области вывода. Для секций title и footer заданы значения по умолчанию, которые будут использованы, если дочерний шаблон не определит эти секции.

Пример

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

@extends('base') @section('title', 'Custom Page Title') @section('header') <h1>Custom Header</h1> @endsection @section('content') <p>This is the main content of the page.</p> <p>It will be displayed in the content area.</p> @endsection

В дочернем шаблоне мы переопределили все три секции. Секция title задана сокращённым способом, а секции header и content - блочным. При рендеринге этого шаблона будет использован кастомный заголовок страницы, кастомный хедер и основной контент.

Результат выполнения кода:

<html> <head> <title>Custom Page Title</title> </head> <body> <div class="header"> <h1>Custom Header</h1> </div> <div class="content"> <p>This is the main content of the page.</p> <p>It will be displayed in the content area.</p> </div> <div class="footer"> Default Footer </div> </body> </html>

Как видно из результата, секция footer не была определена в дочернем шаблоне, поэтому использовалось значение по умолчанию, заданное в директиве yield.

Пример

Давайте создадим контроллер, который будет рендерить наш дочерний шаблон:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class PageController extends Controller { public function show() { return view('child'); } } ?>

Теперь при обращении к этому контроллеру будет отрендерен дочерний шаблон, который использует базовый шаблон с директивами yield. Все секции, определённые в дочернем шаблоне, будут подставлены в соответствующие места базового шаблона.

Результат выполнения кода:

<html> <head> <title>Custom Page Title</title> </head> <body> <div class="header"> <h1>Custom Header</h1> </div> <div class="content"> <p>This is the main content of the page.</p> <p>It will be displayed in the content area.</p> </div> <div class="footer"> Default Footer </div> </body> </html>

Таким образом, директива yield позволяет создавать гибкие шаблоны с возможностью переопределения отдельных частей контента в дочерних представлениях.

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

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