Je suis nouveau dans le framework laravel, je souhaite utiliser des pages maîtres de mise en page laravel et j'ai l'habitude d'inclure des pages enfants dans la page maître. voici ma page d'en-tête et de pied de page et app.blade.php est ma page maître, où j'utilise @yield pour afficher des données. mais cela n'a pas fonctionné pour moi. ma sortie est vide.
app.blade.php (page maître de mise en page)
public function viewmasterpage() { return view('layouts/app'); }
Header.blade.php
Route::get('/masterpage','studentcontroller@viewmasterpage')->name('masterpage');
3 Réponses :
header.blade.php (Utilisez simplement le code pour supprimer les autres)
public function viewmasterpage() { return view('layouts.app'); }
footer.blade.php (Utilisez simplement le code pour supprimer les autres)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <title>Master Page</title> </head> <body> <div> <div class="header"> @include('header') </div> <div class="content"> @yield('content') </div> <div class="footer"> @include('footer') </div> </div> </body> </html>
En utilisant include, la @section peut être supprimée
Problèmes: Il y a des problèmes dans vos lames.
@section
d'ouverture nécessite une balise de fermeture @endsection
. etc.
, vous pouvez simplement ajouter le code nécessaire Je pense aussi que vous confondez @include
et @yield
Si vous souhaitez externaliser votre en-tête et votre pied de page, vous pouvez simplement @include ('yourFolder / footer') et il insère le code
Solution:
@yield
par @include
@section
par @yield('content')
Fichier nommé: header.blade.php
@extends('layout.app') @section('content') //put your content here @endsection
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <title>Master Page</title> </head> <body> <div> @include('header') <div class="content"> @yield('content') </div> @include('footer') </div> </body> </html>
ensuite, vous pouvez créer une nouvelle vue: example.blade.php
<div class="header"> <center> Layout Header Master page </center> </div>
Vous ne comprenez pas bien les directives @extends, @yield et @section.
@extends utilise un autre fichier lame et remplit les directives @yield avec les @sections qu'il définit.
Dis que vous avoir app.blade.php
@extends('app') @section('header') <header>I am the header for the landing page!</header> @endsection @section('content') <div>I am the content for the landing page!</div> @endsection @section('footer') <header>I am the footer for the landing page!</footer> @endsection
Vous pourriez alors dire landing.blade.php
XXX
Où est le fichier studentcontroller ??
Je modifie à nouveau ma question, avec l'ajout d'un fichier de contrôleur d'élève.