Dynamischer Laravel-Seitentitel in der Navbar-Marke

Lesezeit: 3 Minuten

Benutzeravatar von nclsvh
nclsvh

Ich habe layouts.app.blade.php, wo ich meine habe <html> und <body> Tags und auch die <nav>.
In dem <body> Ich liefere Inhalt für jede Seite, also erweitern sie im Grunde diese app.blade.php.
Alles grundlegende Laravel-Zeug, also habe ich jetzt Folgendes:

 <div class="navbar-header">
    <!-- Collapsed Hamburger -->
    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#spark-navbar-collapse">
        <span class="sr-only">Toggle Navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>
    <!-- Branding Image -->
    <a class="navbar-brand" href="https://stackoverflow.com/">
        *Dynamic page title*
    </a>
</div>
// ...
@yield('content')

Und das möchte ich nutzen <a class="navbar-brand"> um meinen Seitentitel anzuzeigen. Das bedeutet also, dass es sich für jedes geladene Template (mit @yield(‘content’)) in dieser ‘parent.blade.php’ ändern muss.

Wie würde ich das mit Laravel 5.2 machen?

Danke vielmals

  • Erweitern Sie die obige Lösung um die Verwendung der Variablen in Ihrer Ansicht, wenn Sie ein Layout erweitern (sollten Sie), dann können Sie es so rendern, wenn Sie einen Titelabschnitt haben: @section(“title”,”$letter”). Dank der Kraft von Blade. Hoffe, das ist nützlich.

    – Kelvin Omereshone

    13. Januar 2019 um 22:39 Uhr

Wenn dies unten der Titel Ihrer Masterseite ist

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

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

dann kann Ihr Seitentitel in Ihrer Blade-Seite wie unten geändert werden

@extends('layouts.master')

@section('title', 'Page Title')

@section('sidebar')
@parent

<p>This is appended to the master sidebar.</p>
@endsection

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

Weitere Informationen finden Sie hier Laravel-Docs

  • Oh, das ist ziemlich einfach. Klappt wunderbar.

    – nclsvh

    28. Dezember 2015 um 19:01 Uhr


  • Ich habe immer versucht, die Titel von Controllern zu benennen, aber jetzt sehe ich, dass deiner besser ist. Danke für den Tipp!

    – Mycodingproject

    8. Juli 2019 um 10:37 Uhr

Benutzeravatar von Erik
Erik

Sie können es beispielsweise an eine Ansicht übergeben

Regler

$title="Welcome";

return view('welcome', compact('title'));

Aussicht

isset($title) ? $title : 'title';

oder php7

$title ?? 'title';

Null-Koaleszenz-Operator

Benutzeravatar von Vishal Kumar Singh
Vishal Kumar Singh

Definieren Sie diesen Titel in diesem Format wie unten angegeben in der Hauptdatei wie (master.blade.php)

<title>Vendor | @yield('mytitle') </title>

auf Seite hier All Company ist mein neuer Titel für die Blade-Datei, die Sie auf dieser Seite dynamisch betiteln möchten

@section('mytitle', 'All Company')

Deklarieren Sie in Ihrem Controller eine Variable namens Titel und komprimieren Sie sie wie unten

    public function aboutUs()
    {
        //page title
        $title="Project | About Us";
        return view('project.about_us', compact('title'));
    }

Rufen Sie auf Ihrer Ansichtsseite die Variable wie folgt auf

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

Eine andere Alternative, die für mich in Laravel 9 und PHP 8 funktioniert hat, ist die Verwendung einer Requisite in einem Master-Layout. In meinem Projekt habe ich nur ein Layout, also ist es einfach:

<x-layout :title="' - Page Title'">
  <!-- content -->
</x-layout>

Dann im layout.blade.php Datei:

@props(['title'])
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Static Title{{$title ?? ""}}</title>
</head>
<body>
  <main>
    {{$slot}}
  </main>
</body>
</html>

1431330cookie-checkDynamischer Laravel-Seitentitel in der Navbar-Marke

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy