Директива hasSection
Директива hasSection применяется в шаблонах Blade
для проверки, была ли определена секция с указанным именем
в дочернем шаблоне. Она возвращает true, если секция
существует, и false в противном случае.
Первым параметром передаётся имя секции.
Синтаксис
@hasSection('sectionName')
Секция существует
@else
Секция не определена
@endif
Пример
Давайте проверим наличие секции 'content'
в родительском шаблоне:
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
@hasSection('content')
<div class="content">
@yield('content')
</div>
@else
<p>Контент не определён</p>
@endif
</body>
</html>
Теперь создадим дочерний шаблон, который определяет
секцию 'content':
@extends('layouts.app')
@section('content')
<h1>Домашняя страница</h1>
<p>Это контент домашней страницы</p>
@endsection
Результат выполнения кода:
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
<div class="content">
<h1>Домашняя страница</h1>
<p>Это контент домашней страницы</p>
</div>
</body>
</html>
Пример
Используем директиву hasSection внутри условия
для отображения дополнительного блока:
<html>
<body>
<div class="sidebar">
@hasSection('sidebar')
@yield('sidebar')
@else
<p>Боковая панель отсутствует</p>
@endif
</div>
<div class="main">
@yield('main')
</div>
</body>
</html>
Создадим дочерний шаблон без секции 'sidebar':
@extends('layouts.admin')
@section('main')
<h1>Панель управления</h1>
<p>Добро пожаловать в панель управления</p>
@endsection
Результат выполнения кода:
<html>
<body>
<div class="sidebar">
<p>Боковая панель отсутствует</p>
</div>
<div class="main">
<h1>Панель управления</h1>
<p>Добро пожаловать в панель управления</p>
</div>
</body>
</html>
Пример
Используем hasSection для условного отображения
заголовка страницы:
<html>
<head>
<title>
@hasSection('title')
@yield('title') - Мой сайт
@else
Мой сайт
@endif
</title>
</head>
<body>
@yield('content')
</body>
</html>
Создадим дочерний шаблон с определённой секцией 'title':
@extends('layouts.base')
@section('title', 'О нас')
@section('content')
<h1>О нашей компании</h1>
<p>Мы занимаемся разработкой веб-приложений</p>
@endsection
Результат выполнения кода:
<html>
<head>
<title>О нас - Мой сайт</title>
</head>
<body>
<h1>О нашей компании</h1>
<p>Мы занимаемся разработкой веб-приложений</p>
</body>
</html>