Bonjour,
Actuellement en pae pour compléter ma formation dans la programmation, je dois créer un site pour l'entreprise. J'ai donc appris le php sur le tas et ai suivi le tuto "Développer un site de a à z" de Grafikart. J'ai commencé à l'adapter au site mais je bloque sur une chose que je n'arrive pas à résoudre. J'aimerais pouvoir mettre sur une page un contenu page de la table post ainsi que des news(posts) liées à ce contenu provenant toujours de la même table. Mes tentatives jusqu'à présent n'ont pas été successful donc j'aimerais savoir si quelqu'un pourrait m'indiquer la façon de procéder, ça serait génial. Merci d'avance.
Attend man il y a beaucoup d'erreur de syntaxe dans ton code!
//vue des pages
function view($id)
{
//Si tu te trouve directement dans le controller post,tu n'a pas besoin du loadModel
$this->loadModel('post');
$d['pages'] = $this->post->find('first',array(
'conditions' => array('Post.online' => 1, 'id'=>$id, 'Post.type' =>'page')));
$d['post'] = $this->post->find('first',array(
'conditions' => array('Post.online' => 1, 'id'=>$id, 'Post.type' =>'post')));
if(empty($d['post']))
{
$this->e404('Page introuvable');
}
//Permet de debuger $d puis coupe l'execution de ton code
var_dump($d);;
die();
$this->set($d);
}
J'ai modifier légérement ton code.Essai de l'adapter
En fait tu bloque sur quelle partie ? Faire passer les variables à la vues ? Faire les requêtes ?
Oui. En l'occurence, charger le modèle et passer les variables à la vue. J'ai essayé jusqu'à présent de modifier la fonction du pageController afin de recharger le model et passer les variables des posts mais quoi que je fasse, il ne reconnait pas la variable post. Je suis novice en php et dans la programmation en général donc je rate surement quelque chose de tout bête.
Bonjour.
Si tu nous montrais déjà le code concerné que tu as fait, peut-être pourrions-nous t'aider.
C'est ce que j'ai la à l'heure actuelle. Mais je n'arrêtes pas de faire des modifications. C'est basé sur le tuto de GraphikArt.
Ces lignes se trouve dans le fichier pageController. Ici, j'ai tenté de faire une fonction pour rendre une page et une autre pour rendre les news, tout les deux se trouvant dans la table Post. J'avais également essayé dans une même fonction mais cela n'a pas marché non plus.
L'erreur est qu'il ne reconnait pas la variable post dans mon fichier de la vue "news".
//vue des pages
function view($id)
{
$this->loadModel('post');
$d['post'] = $this->post->findFirst(array(
'conditions' => array('onlinePost' => 1, 'id'=>$id, 'typePost' =>'page')));
if(empty($d['post']))
{
$this->e404('Page introuvable');
}
$this->set($d);
}
//vue des news
function news()
{
$this->loadModel('post');
$d['post'] = $this->post->findFirst(array(
'conditions' => array('onlinePost' => 1,'typePost' =>'post')));
$this->set($d);
$this->render('news');
}
Bonsoir.
Si tu n'as pas changé le nom des champs de la table, ce n'est pas par exemple : onlinePost, mais Post.online.
Donc, commences par changer les appelations des champs par leur appelation correcte.
Ensuite, il est inutile de définir $this->render, si la vue sur laquelle l'action doit être rendue est la même que l'action.
Pour finir, utilises :
var_dump($d); die();
Dans l'action voulue du controller pour voir ce que contient ta variable $d et si elle n'est pas vide.
@daemon24 : Si tu te trouve directement dans le controller post,tu n'a pas besoin du loadModel
Ces lignes se trouve dans le fichier pageController.
Bref.
Par contre AlexPsyke, je suppose que c'est une erreur de frappe quand tu dis pageController, tu devais vouloir dire PagesController.php, n'est-ce pas ?
Bonjour,
Merci pour toute cette aide, cela m'a bien aidé bien que mon problème ne soit pas résolu(enfin en partie). Donc pour vous répondre, il n'y a pas vraiment d'erreur de syntaxe, il s'agit bien de colonnes que j'ai renommé (online -> onlinePost et type -> typePost). Le findFirst est une fonction créé par grafikart dans son tuto. Et oui il s'agit bien du fichier PagesController.php. Désolé pour mon manque de précision. A l'heure actuelle, mon problème s'est déplacé ailleurs. Merci pour ton bout de code Daemon24, il m'a bien aidé. Merci à toi aussi Lartak. Pour le moment, je vais voir si je peux continuer comme ça mais il semblerait que pour mon projet, j'ai besoin de passer par plusieurs tables au lieu d'une. J'y réfléchis. Je reviendrais peut être vers vous pour si je bloque à nouveaux. En attendant, on peut clore ce topic. Merci encore.
Bonne soirée.