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.phpCore
MainController.php
UtilisateurController.php
Models
Public
Views
MainAutoloader.php
Utilisateur
index.phpdefault.php
login.php
profil.php
register.php
home.php
Controller.php
UtilisateurController.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> } }
Views/Utilisateur/index.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; }
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
Partager