在另一个内部更改页面标题包括 - Laravel

时间:2015-12-27 04:12:31

标签: php laravel laravel-5

我刚开始学习Laravel并想知道如何去做下面的事情。我会给出代码然后解释一下。

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

2 个答案:

答案 0 :(得分:1)

如果您包含@include('includes.head')之类的刀片文件,则无法在<title>@yield('title')</title>中执行head.blade.php。正确的方法是在包含文件时传递值:

@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

答案 1 :(得分:0)

我认为您可以像这样使用@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