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

Директива @pushOnce

Директива @pushOnce применяется в Blade-шаблонах Laravel для добавления содержимого в именованный стек. В отличие от обычной директивы @push, которая добавляет содержимое каждый раз при вызове, директива @pushOnce гарантирует, что содержимое будет добавлено только один раз за всё время выполнения запроса. Директива принимает один обязательный параметр - имя стека. Используется совместно с директивой @stack для вывода содержимого стека в нужном месте шаблона.

Синтаксис

@pushOnce('stack_name') <!-- содержимое для добавления --> @endpushOnce

Пример

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

<html> <head> <title>Laravel App</title> @stack('styles') </head> <body> @yield('content') @stack('scripts') </body> </html>
@extends('layouts.app') @section('content') <h1>Главная страница</h1> @pushOnce('scripts') <script src="app.js"></script> @endpushOnce @pushOnce('scripts') <script src="app.js"></script> @endpushOnce @endsection

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

<script src="app.js"></script>

Пример

Рассмотрим пример с подключением CSS-стилей, где директива @pushOnce предотвращает дублирование подключений:

<header> <h1>Заголовок сайта</h1> @pushOnce('styles') <link rel="stylesheet" href="header.css"> @endpushOnce </header>
<footer> <p>Футер сайта</p> @pushOnce('styles') <link rel="stylesheet" href="footer.css"> @endpushOnce </footer>
@extends('layouts.app') @section('content') @include('partials.header') <main> <p>Основное содержимое</p> </main> @include('partials.footer') @endsection

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

<link rel="stylesheet" href="header.css"> <link rel="stylesheet" href="footer.css">

Пример

Давайте рассмотрим ситуацию, когда используется условие для добавления содержимого в стек:

@extends('layouts.app') @section('content') <article> <h2>{{ $post->title }}</h2> <p>{{ $post->content }}</p> </article> @if ($post->has_comments) @pushOnce('scripts') <script src="comments.js"></script> @endpushOnce <div id="comments"> <!-- Комментарии --> </div> @endif @pushOnce('styles') <link rel="stylesheet" href="post.css"> @endpushOnce @endsection

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

<link rel="stylesheet" href="post.css"> <script src="comments.js"></script>

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

  • директива @push,
    которая добавляет содержимое в стек каждый раз
  • директива @stack,
    которая выводит содержимое стека
  • директива @prepend,
    которая добавляет содержимое в начало стека
  • директива @once,
    которая выполняет код только один раз
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить