-1
votes

Modèle de lame - @extends et @Section ne fonctionne pas

J'apprends le cadre de Laravel et j'essaie de vous familiariser avec l'utilisation du moteur de lame de lame. Cependant, je ne peux pas pour la vie de moi obtenir la fonctionnalité @extends et @section pour travailler au sein de mon projet.

J'ai déjà essayé de réinstaller plusieurs fois à plusieurs reprises, en utilisant différents navigateurs et à redémarrer ma machine, mais je ne peux pas comprendre pourquoi il ne pas 'T Affiche le contenu @section P>

Version Laravel: 5.7.28 | IDE: phpstorm p>

itinéraires / web.php p> xxx pré>

vues / mises en page / index.blade.php p> xxx pré >

Vues / Header.Blade.php P>

@extends('layouts.index')

@section('header')
    <p>Header</p>
@endsection


2 commentaires

Êtes-vous sûr que dans votre parcours de la route fonctionne?


@ D.Khumoyun im à peu près sûr parce que la balise H1 est affichée à la vue, tout le contenu étant prolongé.


4 Réponses :


3
votes

Ce n'est pas la façon dont la templature fonctionne. Vous devez faire référence au modèle enfant dans votre déclaration de retour. Étant donné que le @extends code> est dans ce modèle enfant, Laravel sait utiliser la disposition principale mentionnée. Donc, votre déclaration de retour serait comme: xxx pré>

Si vous voulez juste que l'en-tête soit affiché sur chaque page, vous n'avez pas besoin d'étendre la mise en page principale de votre en-tête, vous devriez simplement Inclure la partie d'en-tête de votre mise en page principale. P>

<body>
<div class="container-fluid">
    <h1>Site Index</h1>
    @include('header')
</div>
</body>


0 commentaires

0
votes

J'ai testé la vue et la mise en page qu'ils semblent travailler. Vérifiez votre déclaration de retour du contrôleur. Essayez Vue de retour ('Header') CODE>;

Route::get('/', function () {
    return view('header');
});


0 commentaires

0
votes

Merci à tous pour vos réponses, je comprends maintenant comment le moteur de modèle de lame fonctionne un peu mieux et comment je faisais cela mal. Juste pour des éclaircissements pour d'autres personnes qui se confondent comme moi et rencontrent ce fil:

Lorsque vous redirigez vers une vue via les itinéraires Web, il doit s'agir d'un enfant qui s'étend d'un maître de dispositions. < p> routes / web.php xxx

Le HTML du fichier maître sera ensuite affiché par défaut et son contenu que nous "visualisant"

Vues / mises en page / maître.blade.php xxx

fonctionner avec le contenu de la page, c'est la vue d'index qui fonctionne avec l'utilisation de @section ("Contenu" ) méthode.

vues / index.blade.blade.php xxx

J'espère que cela aide quelqu'un d'autre.


0 commentaires

0
votes
If you want to show content of section('header') then you must return header view like

Route::get('/', function () {
    return view('header');
});

this is because contents are in header view and you have been extending layout.index

so if you return layout.index view you will not see content of section('header')  

0 commentaires