在另一个包含中更改页面标题 - Laravel

Change page title inside another include - Laravel

我刚刚开始学习 Laravel 并且想知道如何进行以下操作。我给出代码再解释。

我有一个文件includes/head.blade.php。此文件包含您在 <head> 中找到的内容。所以它包含 <title>@yield('title')</title> 如果我现在将此文件包含在一个页面中,让我们说 pages/about.blade.php 像这样 @include('includes.head'),那么我如何使用此行修改嵌套在包含中的 <title> @section('title', ' bout Us')

我想你可以像这样使用 @include,检查这个 DOC

@include('includes.head', ['title' => 'About Us'])

并且 title 应该打印为,

<title>{{ $title }}</title>

最佳实践

检查 laravel blade templating 功能,

您可以定义一个 master layout,扩展您可以创建新视图的布局。就像在这个 DOC.

master.blade.php

<html>
    <head>
        <title>@yield('title')</title>
    </head>
    <body>
        @section('sidebar')
            This is the master sidebar.
        @show

        <div class="container">
            @yield('content')
        </div>
    </body>
</html>

about.blade.php

@extends('master')

@section('title', 'About Us') // this will replace the **title section** in master.blade
//OR
//@section('title')
//    About Us
//@endsection

@section('sidebar')
    <p>This is appended to the master sidebar.</p>
@endsection

@section('content')
    <p>This is my body content.</p>
@endsection

如果您像 @include('includes.head') 一样包含 blade 文件,那么您不能在 head.blade.php 中执行 <title>@yield('title')</title> 。执行此操作的正确方法是在包含文件的同时传递值,例如:

@include('includes.head',['title'=>'About Us'])

并且在 head.blade.php 中你必须这样做:

<title>
   @if(isset($title))
       {{ $title }}
   @endif 
</title>

但是如果你 extends heade.blade.php 那么你可以这样做:

head.blade.php

<title>@yield('title')</title>

about.blade.php

@extends('includes.head')
@section('title')
    {{ "About Us" }}
@endsection

更多信息Check this