Я работаю над одностраничным веб-сайтом, который имеет навигацию под разделом «Домой». На этом веб-сайте мой клиент имеет возможность скрыть или показать любой раздел страницы, для этого я добавил простую инструкцию if для проверки, должна ли страница быть видимой или нет:
Представление, которое я загружаю, собирает все разделы на одностраничном веб-сайте:
@extends('layouts.master')
@section('content')
@include ('homeSection')
@include ('layouts.navigation')
@if ($section1)
@include ('section1')
@endif
@if ($section2)
@include ('section2')
@endif
...
@endsection
Единственный раздел, который не имеет опции показать / скрыть (он всегда будет отображаться), является домашним разделом, все остальные разделы могут быть скрыты моим клиентом (через базу данных).
Все это работает отлично, показывает страницы, которые должны быть видны, и скрывает разделы, которые должны быть скрыты.
Проблема, с которой я столкнулся, заключается в том, чтобы сделать так, чтобы навигация показывала страницы, которые фактически скрыты, без необходимости выполнять операторы if в каждом цикле for.
Мое решение состояло в том, чтобы создать @yield («навигация») и в нижней части страницы добавить @section («навигация»), которая бы @include «навигация» отображалась после заполнения переменной $ pages. как это:
@php ( $sections = array($home) )
@extends('layouts.master')
@section('content')
@include ('home')
@yield ('navigation')
@if ($section1)
@include ('section1')
@php ( array_push($sections, $section1) )
@endif
@if ($section2)
@include ('section2')
@php ( array_push($sections, $section2) )
@endif
...
@endsection
К этому времени переменная $ section будет заполнена всеми видимыми страницами:
@section ('navigation')
@include ('layouts.navigation')
@endsection
Конечно, я использую переменную $ section для создания панели навигации с оператором @foreach, единственная проблема в том, что она не работает. Я попытался переместить @section ('navigation'), но он работает только тогда, когда он идет перед @yield ('navigation'), тогда переменная $ section имеет только homeSection.
Я знаю, что могу сделать это непосредственно в моем навигационном представлении, но мне пришлось бы использовать больше логики в нем, повторно выполняя все операторы if. Может быть, я просто делаю что-то не так в этом представлении?