bonjour à tous,

le problème : la page affiche les données du render non pas dans le template... mais au dessus !

voilà comment j'ai réussi...

tout commence avec une structure classique

classes
Controllers
Controller.php
MainController.php
UtilisateurController.php
Core
Models
Public
Views
Main
Utilisateur
index.php
login.php
profil.php
register.php
default.php
home.php
Autoloader.php

Controller.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
namespace App\Controllers;
abstract class Controller
{
    public function render(string $fichier, array $donnees = [], string $template='default')
    {
<div style="margin-left:40px">extract($donnees);
ob_start();
require_once ROOT.'/Views/'.$fichier.'.php';
$contenu = ob_get_clean();
require_once ROOT.'/Views/'.$template.'.php';</div>    }
}
UtilisateurController.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace App\Controllers;
use App\Core\Form;
use App\Models\UtilisateurModel;
class UtilisateurController extends Controller
{
...
public function index(){
        {
            if(isset($_SESSION['user']) && !empty($_SESSION['user']['id'])){
                $utilisateur = new UtilisateurModel;
                $listeUtilisateur = $utilisateur->findAll($_SESSION['user']['id']);
                include_once ROOT . '/Views/Utilisateur/index.php';
                $this->render('Utilisateur/index', compact ('listeUtilisateur'),'default');
            }else{
                $_SESSION['erreur']="Vous devez être connecté(e) pour accéder à cette page.";
                header('Location: /Utilisateur/login');
                exit;
            }
Views/Utilisateur/index.php
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<div id="block1" class="col-md-6 col-lg-4 col-xl-4 col-xxl-4">
            Liste des utilisateurs : </p>
                <?php foreach ($listeUtilisateur as $utilisateur) : ?>
                    <section>
                        <div><?="Identifiant : ". $utilisateur->identifiant ?></div>
                        <div><?="E mail : ". $utilisateur->email ?></div>
                        <div><?="Id_utilisateur : ". $utilisateur->id_utilisateur ?></div>
                        <p></p>
                    </section>
                <?php endforeach;?>
            </div>

Views/default.php
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!DOCTYPE html>
<html lang="fr">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>default</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
 
    <div class="container-fluid">
        <div class="row text-white" style="background-color:darkblue ">
            <h1></h1>
            </br></br></br>
            <h1>Mon Super Site...</h1>
            <h6></h6>
            </br>
        </div>
    </div>
    </br>
</head>
 
<body>
 
    <nav class="navbar navbar-expand-lg bg-body-tertiary fixed-top">
       ...
    </nav>
 
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous">
    </script>
 
 
    <div class="container">
        <?php if (!empty($_SESSION['erreur'])) : ?>
            <div class="alert alert-danger" role="alert">
                <?php echo $_SESSION['erreur'];
                unset($_SESSION['erreur']); ?>
            </div>
        <?php endif; ?>
 
        <?php if (!empty($_SESSION['message'])) : ?>
            <div class="alert alert-succes" role="alert">
                <?php echo $_SESSION['message'];
                unset($_SESSION['message']); ?>
            </div>
        <?php endif; ?>
 
        <?php var_dump($contenu); ?>
 
        <?= $contenu ?>
 
    </div>
 
</body>
 
<foot>
    <div class="container-fluid">
        <div class="row text-white" style="background-color:darkblue ">
            <h5>... est vraiment génial !</h5>
        </div>
</foot>
 
</html>

et donc la page Views/Utilisateur/index.php affiche, du haut vers le bas :
la navbar
la liste des utilisateurs
le header Mon Super Site...
le var_dump($contenu)= string'' (length=0)
le footer ... est vraiment génial !

je m'attendais naturellement à :
la navbar
le header Mon Super Site...
// var_dump($contenu);
la liste des utilisateurs
le footer ... est vraiment génial !

je vais revoir le footer !

mais l'un d'entre vous pourrait m'indiquer ce qui cloche ?

par avance merci