Bonjour a tous,
Je suis sur un projet de blog qui doit etre en mvc et en poo.
J'ai voulu mettre ma "vue" en objet. Je me suis basé sur ce tuto: http://bpesquet.developpez.com/tutor...hitecture-mvc/
Mais j'ai toujours une erreur:Fatal error: Using $this when not in object context in C:\wamp64\www\forteroche\view\frontend\listPostsView.php on line 1
Voici mon code:
mon fichier view.php:
mon fichier listPostView.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
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 <?php class View { // Nom du fichier associé à la vue private $fichier; // Titre de la vue (défini dans le fichier vue) private $title; public function __construct($action) { // Détermination du nom du fichier vue à partir de l'action $this->fichier = "/forteroche/view/frontend/" . $action . ".php"; } // Génère et affiche la vue public function generer($donnees) { // Génération de la partie spécifique de la vue $content = $this->genererFichier($this->fichier, $donnees); // Génération du gabarit commun utilisant la partie spécifique $view = $this->genererFichier('forteroche/view/frontend/template.php', array('title' => $this->title, 'content' => $content)); // Renvoi de la vue au navigateur echo $view; } // Génère un fichier vue et renvoie le résultat produit private function genererFichier($fichier, $donnees) { if (file_exists($fichier)) { // Rend les éléments du tableau $donnees accessibles dans la vue extract($donnees); // Démarrage de la temporisation de sortie ob_start(); // Inclut le fichier vue // Son résultat est placé dans le tampon de sortie require $fichier; // Arrêt de la temporisation et renvoi du tampon de sortie return ob_get_clean(); } else { throw new Exception("Fichier '$fichier' introuvable"); } } }
mon template:
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
19 <?php $this->title = 'Mon blog'; ?> <?php while ($data = $posts->fetch()) { ?> <div class="news"> <h3> <?= htmlspecialchars($data['chapter']) ?> : <?= htmlspecialchars($data['title']) ?> <em>le <?= $data['creation_date_fr'] ?></em> </h3> <p> <?= nl2br(htmlspecialchars($data['content'])) ?> <br/> <br/> <em><a href="index.php?action=post&id=<?= $data['id'] ?>">Lire le chapitre...</a></em> </p> </div> <?php } $posts->closeCursor(); ?>
Apparemment c'est un problème d'instanciation de mon objet. mais je n'arrive pas a résoudre le souci.
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> <?= $title ?> </title> <link href="public/css/style.css" rel="stylesheet" /> </head> <body> <nav class="navbar navbar-default navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div class="collapse navbar-collapse" id="myNavbar"> <ul class="nav navbar-nav"> <li><a href="#about">Billet simple pour l'Alaska</a></li> <li><a href="#portfolio">Accueil</a></li> <li><a href="#recommandations">Connexion</a></li> </ul> </div> </div> </nav> <div id="container"> <div col-md-12><img id="paysage" src="/forteroche/images/landscape.jpg" class="img-responsive" alt="Responsive image"></div> </div> <?= $content ?> <footer id="footer"> <p>jeanforteroche</p> </footer> </body> </html>
Partager