【发布时间】:2018-10-09 23:47:35
【问题描述】:
我正在开发一个单页网站,该网站的导航位于“主页”部分下方。在这个网站上,我的客户可以选择隐藏或显示页面的任何部分,我通过添加一个简单的 if 语句来检查页面是否应该可见:
我正在加载的视图组合了一页网站上的所有部分:
@extends('layouts.master')
@section('content')
@include ('homeSection')
@include ('layouts.navigation')
@if ($section1)
@include ('section1')
@endif
@if ($section2)
@include ('section2')
@endif
...
@endsection
唯一没有显示/隐藏选项(它将始终显示)的部分是主页部分,我的客户可以隐藏所有其他部分(通过数据库)。
所有这些都运行良好,它显示了应该可见的页面并隐藏了应该隐藏的部分。
我遇到的问题是如何使其导航显示实际隐藏的页面,而不必在每个 for 循环上执行 if 语句。
我的解决方案是创建一个@yield('navigation') 并在页面底部添加一个@section('navigation'),一旦填充了$pages 变量,它将@include 'navigation' 视图。像这样:
@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
此时 $sections 变量将被所有可见页面填充:
@section ('navigation')
@include ('layouts.navigation')
@endsection
当然,我使用 $sections 变量来制作带有 @foreach 语句的导航栏,唯一的问题是它似乎不起作用。我尝试移动@section('navigation'),但它只在@yield('navigation') 之前起作用,即$sections 变量只有homeSection。
我知道我可以直接在导航视图中执行此操作,但我必须通过重新运行所有 if 语句来在其中使用更多逻辑。也许我只是在这个视图中做错了什么?
【问题讨论】: