Директива stack
Директива stack применяется в Blade-шаблонах
для вывода содержимого стека, которое было ранее
добавлено с помощью директив push или
prepend. Первым параметром передаётся
имя стека. Если стек содержит несколько элементов,
они выводятся в порядке добавления.
Синтаксис
@stack('name')
Пример
Давайте создадим базовый шаблон с выводом стека для скриптов:
<html>
<head>
<title>App</title>
@stack('styles')
</head>
<body>
@yield('content')
@stack('scripts')
</body>
</html>
Теперь в дочернем шаблоне поместим скрипт в стек:
@extends('layouts.app')
@section('content')
<h1>Hello</h1>
@endsection
@push('scripts')
<script>
alert('Page loaded');
</script>
@endpush
Результат выполнения кода:
<html>
<head>
<title>App</title>
</head>
<body>
<h1>Hello</h1>
<script>
alert('Page loaded');
</script>
</body>
</html>
Пример
Давайте поместим в стек несколько элементов и выведем их:
<html>
<head>
@stack('head')
</head>
<body>
@yield('content')
</body>
</html>
@extends('base')
@push('head')
<meta name="description" content="page">
@endpush
@push('head')
<link rel="stylesheet" href="/css/style.css">
@endpush
@section('content')
<p>Content</p>
@endsection
Результат выполнения кода:
<html>
<head>
<meta name="description" content="page">
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<p>Content</p>
</body>
</html>
Пример
Давайте используем директиву prepend для добавления элемента в начало стека:
<html>
<head>
@stack('styles')
</head>
<body>
@yield('content')
</body>
</html>
@extends('base')
@push('styles')
<link rel="stylesheet" href="/css/main.css">
@endpush
@prepend('styles')
<link rel="stylesheet" href="/css/reset.css">
@endprepend
@section('content')
<h1>Title</h1>
@endsection
Результат выполнения кода:
<html>
<head>
<link rel="stylesheet" href="/css/reset.css">
<link rel="stylesheet" href="/css/main.css">
</head>
<body>
<h1>Title</h1>
</body>
</html>