Bonjour,

je voudrais savoir comment je pouvait lié des pages HTML avec des controller pages !! j'ai une 10aine de pages HTML pour mon sites mais je n'ai fait aucun liens entre directement, je voulais le faire avec des controller !! comment je peux m'y prendre ?!
par exemple tel bouton renvoie sur tel pages grace au controller ?!

Cordialement!!

6 réponses


Salut, utilise le tuto de la création d'un site jour 1 en cakephp. Au départ, il crée un sytème de création de page dans un backoffice. En gros le contenu de chacune de tes pages sera enregistrées dans la BDD. Crée ce système et ensuite mais directement tes 10 pages dans la BDD. Après il fait un foreach des liens de ces pages dans un menu pour les atteindre.
A+

je suis actuellement en train de suivre le tuto comme tu me la conseiller, cependant lorsque j'insère dans la Table "posts", dans la parti "content" je met quoi ?! etant donner que mes pages sont deja créé ?!

cordialement

Ben, tu mets le code brut de tes pages déjà créée dans content. Je suppose que ton header, ton footer, tes menus sont toujours les mêmes sur toutes tes pages. La seule chose qui est modifié est le contenu au milieu de tout ça. Tu copies ce contenu avec les div etc et tu l'insère dans la valeur content de ta table posts. Normalement, tu devrais avoir donc 10 pages, qui seront appelés par le titre de tes pages dans le foreach qui se trouve dans le menu. J'ai fait ainsi pour un site et cela a bien fonctionné.

ok sa marche je te remercie :). je test sa ce soir et je te dit si cela fonctionne :).

Bonjour Zenkiai,

J'ai bien suivi le tuto j'ai donc créé une table posts ou j'y ai ajouter toute mes pages html. pour le header le footer et les menu je l'ai est mis dans le layout !! mais sur certaines pages le header peux avoir quelque modif par rapport a d'autres, je met cette modif dans le content ?!

Cordialement !!

Non, par contre quel genre de modif ?
Je suppose que dans ton layout par défaut, tu as quelque chose comme ça :

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> 
  <head> 
    blablabla
    <title><?php echo $title_for_layout; ?></title>
  </head> 
  <body>       
    <?php echo $this->Session->flash(); ?>
    <header>
      <?php echo $this->element('header'); ?>
    </header>   
    <section>
      <?php echo $this->fetch('content'); ?>
    </section>
    <footer>
      <?php echo $this->element('footer'); ?>
    </footer>

  </body> 

  <?php echo $this->fetch('meta'); ?>
  <?php echo $this->fetch('css'); ?>
  <?php echo $this->Html->script('https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'); ?>
  <?php echo $this->fetch('script'); ?>

</html>

et dans ton dossier View\Elements deux fichiers header.ctp et footer.ctp

Admettons que tu as un title_for_layout sur chacune de tes pages et que la page qui a un header différent à comme titre login et que tu veux lui mettre comme header le fichier headerlogin.ctp que tu auras créé dans le dossier Elements.
Pourquoi ne pas mettre une condition dans ton layout default.ctp du style :

Si $title_for_layout est login alors <?php echo $this->element('headerlogin'); ?>
sinon <?php echo $this->element('header'); ?>

C'est une idée comme une autre mais je pense que cela devrait fonctionné.