1
votes

n'a pas obtenu de sortie avec la page de mise en page dans laravel

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');


2 commentaires

Où est le fichier studentcontroller ??


Je modifie à nouveau ma question, avec l'ajout d'un fichier de contrôleur d'élève.


3 Réponses :


0
votes

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>


1 commentaires

En utilisant include, la @section peut être supprimée



1
votes

Problèmes: Il y a des problèmes dans vos lames.

  1. Chaque balise @section d'ouverture nécessite une balise de fermeture @endsection .
  2. La section Balises doit contenir tout ce que vous souhaitez afficher entre les deux.
  3. Vous n'avez pas besoin d'ajouter tout le etc. , vous pouvez simplement ajouter le code nécessaire
  4. Je pense que le contenu devrait être un rendement car vous voudrez peut-être y insérer le contenu d'autres pages.

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:

  • Remplacez @yield par @include
  • Remplacez @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>
    


    0 commentaires

    0
    votes

    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


    0 commentaires