Bonjour,

Je post ici un code que j'ai développé qui permet de créer le chemin de fer sur un site.

é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!

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

table.sql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
 
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="&nbsp;&raquo;&nbsp;".$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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<?php		
			echo $this->chemin;	
?>
J'attend vos avis.