Création d'un chemin de fer
Bonjour,
Je post ici un code que j'ai développé qui permet de créer le chemin de fer sur un site.
:fleche: étant débutant avec le modèle MVC et zend framework, j'attend de vous de me dire ou sont mes erreurs dans la construction. Par exemple, à savoir si la boucle while qui construit le chemin, ne devrait pas plutôt se situé dans la vue, et non le controleur. Toutes vos critiques sont bonne à prendre!
:fleche: comme je n'ai vu que très peu de code concernant la création d'un chemin de fer, ca pourra peut-être aider certaine personne :P
table.sql
Code:
1 2 3 4 5 6 7 8 9 10 11
|
CREATE TABLE `pages` (
`Id` INT NOT NULL AUTO_INCREMENT ,
`Id_page` VARCHAR(255) NOT NULL ,
`Titre` VARCHAR( 255 ) NOT NULL ,
`Mots_cles` VARCHAR( 255 ) NOT NULL ,
`Description` VARCHAR( 255 ) NOT NULL ,
`Contenu` TEXT NOT NULL ,
`Id_parent` VARCHAR(255) NOT NULL ,
PRIMARY KEY ( `Id` )
); |
zendf\application\controllers\IndexController.php
Code:
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
|
class IndexController extends Zend_Controller_Action
{
function cheminAction()
{
$this->view->title="chemin";
// instanciation
$pages = new Pages();
// je récupère la vue ou je me situe
$vue = basename($_SERVER['REQUEST_URI']);
$vue == "public" ? $Id_page="index" : $Id_page = $vue;
// initialisation des variables a vide
$chemin = $Id_parent = "";
// tant que
while($Id_parent != 'end')
{
// j'exécute un select sur la page ou je me situe
$this->view->chemin = $pages->getPages($Id_page);
// je récupère le titre de la page
$chemin_page_en_cours = '<a href=' . $this->view->url(array("controller"=>"index","action"=>"$Id_page")) .'>'.$this->view->chemin[0]->Titre.'</a>';
// si je ne suis pas sur la page d'acceuil
// alors il y a une page précédente donc j'insère ma fèche
if($Id_page != 'index')
{
$chemin_page_en_cours=" » ".$chemin_page_en_cours;
}
// je concatene
$chemin = $chemin_page_en_cours.$chemin;
// je récupere l'id parent, le noeud auquel est rataché ma page
$Id_page = $Id_parent = $this->view->chemin[0]->Id_parent;
}
$this->view->chemin = $chemin;
}
} |
zendf\application\models\Pages.php
Code:
1 2 3 4 5 6 7 8 9 10 11
|
class Pages extends Zend_Db_Table{
public function getPages($idpage)
{
$select = $this->select();
$select->from('pages');
$select->where('Id_page = ? ',$idpage);
$res = $this->fetchAll($select);
return $res;
}
} |
zendf\application\views\scripts\index\chemin.phtml
Code:
1 2 3 4
|
<?php
echo $this->chemin;
?> |
J'attend vos avis. :king: