使用 Laravel 框架 - 只有 1 yield 在我的 layout.blade.php 文件中工作
Using Laravel Framework - Only 1 yield is working in my layout.blade.php file
问题是我的 about.blade.php 文件显示在布局中,但我的 navbar.blade.php 没有显示。
我能猜到的最好结果(我是 Laravel 的新手)是我的控制器 returns about.blade.php 扩展了 layout.blade.php,但出于某种原因, layout.blade 不知道 navbar.blade.php,即使 navbar.blade.php 扩展了 layout.blade.php。
layout.blade.php
<!DOCTYPE html>
<html>
<head>
</head>
<body>
@yield('navbar')
<div class="container">
@yield('content')
</div>
</body>
</html>
navbar.blade.php
@extends('layout')
@section('navbar')
<header>
<nav class="nav navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/?page=main">SWMHS</a>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="/">Main</a></li>
<li><a href="/about">About</a></li>
</ul>
</div>
</div>
</nav>
</header>
@endsection
about.blade.php
@extends('layout')
@section('content')
<h1 class="text-center">This is the About Page</h1>
@endsection
yield
指令并不像您想象的那样工作。如果该部分已添加到 blade 模板,它将仅显示内容。
您需要添加一个 navbar
部分并将其复制并粘贴到您希望它显示的每个视图中。另一种方法是创建部分和 @include()
导航栏模板。
假设您的 navbar
模板不会改变,这是应该完成的方式。
layout.blade.php
<!DOCTYPE html>
<html>
<head>
</head>
<body>
@include('partials.navbar')
<div class="container">
@yield('content')
</div>
</body>
</html>
partials/navbar.blade.php
<header>
<nav class="nav navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/?page=main">SWMHS</a>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="/">Main</a></li>
<li><a href="/about">About</a></li>
</ul>
</div>
</div>
</nav>
</header>
关于.blade.php
@extends('layout')
@section('content')
<h1 class="text-center">This is the About Page</h1>
@endsection
问题是我的 about.blade.php 文件显示在布局中,但我的 navbar.blade.php 没有显示。
我能猜到的最好结果(我是 Laravel 的新手)是我的控制器 returns about.blade.php 扩展了 layout.blade.php,但出于某种原因, layout.blade 不知道 navbar.blade.php,即使 navbar.blade.php 扩展了 layout.blade.php。
layout.blade.php
<!DOCTYPE html>
<html>
<head>
</head>
<body>
@yield('navbar')
<div class="container">
@yield('content')
</div>
</body>
</html>
navbar.blade.php
@extends('layout')
@section('navbar')
<header>
<nav class="nav navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/?page=main">SWMHS</a>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="/">Main</a></li>
<li><a href="/about">About</a></li>
</ul>
</div>
</div>
</nav>
</header>
@endsection
about.blade.php
@extends('layout')
@section('content')
<h1 class="text-center">This is the About Page</h1>
@endsection
yield
指令并不像您想象的那样工作。如果该部分已添加到 blade 模板,它将仅显示内容。
您需要添加一个 navbar
部分并将其复制并粘贴到您希望它显示的每个视图中。另一种方法是创建部分和 @include()
导航栏模板。
假设您的 navbar
模板不会改变,这是应该完成的方式。
layout.blade.php
<!DOCTYPE html>
<html>
<head>
</head>
<body>
@include('partials.navbar')
<div class="container">
@yield('content')
</div>
</body>
</html>
partials/navbar.blade.php
<header>
<nav class="nav navbar-default navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/?page=main">SWMHS</a>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="/">Main</a></li>
<li><a href="/about">About</a></li>
</ul>
</div>
</div>
</nav>
</header>
关于.blade.php
@extends('layout')
@section('content')
<h1 class="text-center">This is the About Page</h1>
@endsection