Zend Framework (ZF) : un livre d’or, quatrième étapes : Affichages et ajout de messages

Créations d’un livre d’or en 6 étapes

  1. Définition
  2. Créations des tables sql et des répertoires
  3. Bases des fichiers
  4. Affichages et ajout de messages
  5. Modification et suppression des messages
  6. Conclusions

Affichages et ajout de messages

Maintenant, il nous faut modifier le contrôleur afin qu’il affiche le contenu des fichier index.phtml et ajout.phtml.

 <?php /** Zend_Controller_Action */ require_once 'Zend/Controller/Action.php'; class LivreController extends Zend_Controller_Action { 	public function indexAction() 	{ 		$livre = new livre(); 		$this->view->livres = $livre->fetchAll(); 	} 	public function ajouterAction() 	{ 		$this->view->title .= ' .: Ajout d\'un message'; 		if ($this->getRequest()->isPost()) 		{ 			Zend_Loader::loadClass('Zend_Filter_StripTags'); 			$filter = new Zend_Filter_StripTags(); 			$livre = $this->_getEmptyMsg(); 			$livre->id = null; 			$livre->nom = trim($filter->filter($this->getRequest()->getPost('nom'))); 			$livre->message = trim($filter->filter($this->getRequest()->getPost('message'))); 			if ($livre->nom != htmlspecialchars('Pseudo')) 			{ 				$livre_ = new Livre(); 				$livre_->insertObject($livre); 				$this->_redirect('/livre'); 				return; 			} 			else 			{ 				$this->view->message = 'Merci de donner votre pseudo!'; 			} 		} 		//création d'un message vide 		$this->view->livre = $this->_getEmptyMsg(); 	} 	function init() 	{ 		$this->view->title = 'Livre d\'or'; 		//url de base... 		$this->view->baseUrl = $this->_request->getBaseUrl(); 		$this->view->action = $this->getRequest()->getActionName(); 		//prêt à travailler sur les livres 		Zend_Loader::loadClass('Livre'); 		//ajout des aides de view 		$this->view->addHelperPath('./app/views/helpers', 'MyWsp_View_Helper'); 		$this->view->setEscape('utf8_encode'); 	} 	/** 	 * Créer un message vide 	 * 	 * @return Object 	 */ 	protected function _getEmptyMsg() 	{ 		//création d'un message vide 		$livre = new stdClass(); 		$livre	->id = -99; 		$livre	->nom = 'Pseudo'; 		$livre	->message = 'Entrez votre message'; 		$livre	->date = time(); 		return $livre; 	} }

Passons en revue chaque méthode

init()

Cette permet l’initialisation des différent paramètre, elle est appelé dans le constructeur parent de la class. On en profite pour définir un titre de page ($this-view->title) et divers autres paramètres. On défini aussi un répertoire supplémentaire pour les helper de view ($this->view->addHelperPath(‘./app/views/helpers’, ‘MyWsp_View_Helper’);).

ajouterAction()

Appeler lorsque on est à l’url /livre/ajouter, tout comme les autres méthode du type actionnNameAction() la partie actionName est prise depuis l’url! On récupère les différent paramètre si on a effectué un post ou on affiche simplement le contenu de ajouter.phtml (ceci se faisant automatiquement).

indexAction()

On récupère les informations dans la base de données, et on stocke les données dans le viewer.

Ajoutons quelques fichiers afin de rendre le tout plus intéressant et avoir un vrai jeu de templates/gabarit! header.phtml

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-be" lang="fr-be"> <head> 	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 	<title><?php echo $this->escape($this->title); ?></title> </head> <body> <div id="content"> <h1><?php echo $this->escape($this->title); ?></h1>

le haut de la page html

footer.phtml

 	</div> </body> </html>

le bas de la page html

index.phtml

 <?php echo $this->render('header.phtml'); ?> 	<div id="livre"> 		<p><a href="<?php echo $this->baseUrl; ?>/livre/ajouter">Ajouter un message</a></p> 		<div id="livre_message"> 		<?php foreach($this->livres as $livre) : ?> 			<div class="livre_block_message"> 				<span class="livre_pseudo"><?php echo $this->escape($livre->nom); ?></span> | 				<span class="livre_date">Le <?php echo $this->date('DDDD DD MMMM YYYY', $this->escape($livre->date)); ?></span> 				<br /> 				<span class="livre_message"><?php echo nl2br($this->escape($livre->message)); ?></span> 				<?php 				if ($this->connecter) 					echo '<br /><a href="' , $this->baseUrl , '/livre/modifier/id/' , $livre->id , '">Modifier</a> 					<a href="' , $this->baseUrl , '/livre/supprimer/id/' , $livre->id , '">Supprimer</a>'; 				?> 			</div> 		<?php endforeach; ?> 		</div> 	</div> <?php echo $this->render('footer.phtml'); ?>

La liste des messages du forum, on oublie pas d’inclure le haut et le bas de page (via $this->render();)

On voix ici l’utilisation du helper Date afin d’afficher la date au format choisi.

ajouter.phtml

 <?php echo $this->render('header.phtml'); ?> 	<div id="livre"> 	<strong><?php echo $this->message; ?></strong> 	<?php echo $this->render('livre/_form.phtml'); ?> 	</div> <?php echo $this->render('footer.phtml'); ?>

La page d’ajout des messages.

_form.phtml

 <form method="post" action="<?php echo $this->baseUrl ?>/livre/<?php echo $this->action; ?>" name="form_nom"> 	<div id="livre_haut"> 		<input type="text" name="nom" value="<?php echo $this->escape(trim($this->livre->nom)); ?>"> 		&nbsp;&bull;&nbsp; 		<input type="text" name="site" value="<?php echo $this->escape($this->livre->site);?>"> 		<br /> 		<textarea name="message" cols="50" rows="5"><?php echo $this->escape($this->livre->message); ?></textarea> 		<br /> 		<button type="submit" name="add">Poster</button> 	</div> </form> <br /> <br />

Le formulaire d’ajout et de modification (noté le _ devant le nom permettant d’avoir un template/gabarit privé.

En principe vous êtes maitenant capable d’ajouter des messages et de les afficher!

Similar Posts:

    None Found