Bonjour,
J'ai suivi le tuto concernant la création d'un site web de A à Z.
J'ai donc la même structure, et sur ma page d’accueil j'ai l'ensemble de mes posts présents sur mon site.
Il y a une div filtre sur la page d'accueil ainsi qu'une div ou sont affichés tous les posts. J'ai donc une méthode index dans le controller post qui me permet d'afficher ma page avec une vue index.php
Dans cette vue je ne voudrais afficher que la structure de ma page d'accueil, avec le filtre a gauche, mettre une div pour les posts mais la laisser vide.
En effet, je voudrais afficher la vue "posts" dans cette div. Il y a une méthode posts dans le controller post pour envoyer les données a la vue.
Le truc c'est que je ne sais pas comment inclure ma vue posts dans ma vue index pour que tout mes posts soient affichés dans la page index.
Merci d'avance
dans ta vue "posts", tu mets ceci au debut:
if($this->request->controller !== 'post'){
$Posts = $this->request('post','posts');
}
et dans ta vue "index", tu mets ceci à l'endroit où tu veux afficher les posts:
$file = chemin_vers_le_dossier_contenant_la_vue_posts.'/posts.php';
if(file_exists($file)) require $file;
normalement çà devrait marcher.
c'est normal que depuis la vue index tu n'ait pas acces à la variable '$paris'
remplace le code precedent par çà:
if($this->request->controller !== 'post'){
$paris = $this->request('post','posts');
}
salut pour mettre sur pied le système dispos ici,
j'ai procedé comme suit:
dans ma vue portfolio (celle que je veux inclure), j'insert ce code tout au debut:
if($this->request->controller !== 'demos'){ // car si le controller "demos" est lancé, la methode "portfolio" est automatique appellée.
$ProjectLists = $this->request('demos','portfolio');
$CurrentProject = '';
}
et ensuite dans mon header.php j’inclue simplement le fichier portfolio.php:
$file = APPLICATIONS.DS.ucfirst('demos').DS.'portfolio.php';
if(file_exists($file)) require $file;
en esperant que cela t'aide.
C'est bizarre, mon fichier posts.php n'est pas trouvé.
J'ai cette erreur la si j’enlève le test pour voir si le fichier existe :
Warning: require(/test\view\post\posts.php) [function.require]: failed to open stream: No such file or directory in \Mes Documents\EasyPHP-5.3.9\www\test\view\post\index.php on line 274
Fatal error: require() [function.require]: Failed opening required '/test\view\post\posts.php' (include_path='.;C:\php\pear') in \Mes Documents\EasyPHP-5.3.9\www\test\view\post\index.php on line 274
je constate que si tu as respecté les noms et la casse de variables tout au long du tuto, au lieu de la variable $Posts, tu aurai plutot $post (minuscule singulier). tu retiens donc ceci:
**
if($this->request->controller !== 'post'){
$post = $this->request('post','posts');
}
**
Je pense avoir bien respecté les majuscules et les pluriels (mon controller s'appelle PostController).
Mais ca ne règle pas mon soucis de chemin, je sais pas pourquoi mais il cherche mon fichier dans \view\post\post\index.php
Pourquoi il y a index.php à la fin ?
est ce que tu as bien une vue nommée "posts.php" dans ton dossier des vues? car il ne le trouve pas.
si tu l'as nommé different, tu doit remplacer posts.php par le vrai nom
je constate aussi que tu as un pb de slash et antislash. montre moi comment tu fais ton include
J'ai également noté ce problème je ne sais pas d’où ça peu venir.
<?php
$file = BASE_URL.DS.'view'.DS.'post'.DS.'posts.php';
require $file;
?>
de façon generale tu fais çà:
$file = trim(BASE_URL, '/\').DS.'view'.DS.'post'.DS.'posts.php';
require $file;
J'ai réussi en faisant ca :
$file = ROOT.DS.'view'.DS.$this->request->controller.DS.'posts.php';
require $file;
En fait c'etait ROOT et pas BASE_URL :p
Par contre dans ma vue j'ai des erreurs, il semblerait que la méthode attachée à la vue ne soit pas prise en compte.
Notice: Undefined variable: paris in \Mes Documents\EasyPHP-5.3.9\www\test\view\post\posts.php on line 11
Warning: Invalid argument supplied for foreach() in \Mes Documents\EasyPHP-5.3.9\www\test\view\post\posts.php on line 11
Dans ma methode je fais ca :
$condition = array('online' => 1,'ville'=>'paris');
$d'paris'] = $this->Post->find(array(
'conditions' => $condition,
'limit' => $perPage,
'order' => 'id DESC'
));
$this->set($d);
Et dans ma vue je doit les récuperer comme ca :
<?php foreach ($paris as $k => $v):
...
endforeach ?>
Je récupère chaque variable en faisant $v->title par exemple
Et pourtant dans ma barre d'adresse quand je tape http://127.0.0.1/test/post/posts ca marche nickel, je vois tout mes posts
Oui ca marche merci ;)
J'ai quelques autres problemes mais qui n'ont rien a voir avec le sujet.
Je te remercie pour ton aide !!