Zend Framework (ZF) : un livre d’or, cinquième étapes : Modification et suppression des 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

Modification et suppression des messages

Modifions notre contrôleur :

 <?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(); 	} 	public function modifierAction() 	{ 		//si on est aps connecter ->redirection sur le logeur 		if (!$_SESSION['connecter']) 			$this->getResponse()->setRedirect($this->view->baseUrl . '/livre/admin/'); 		$this->view->title .= ' .: Modification d\'un message'; 		//récupération du message correspondant au paramètre id 		$livreTable = new Livre(); 		$where  = $livreTable->getAdapter()->quoteInto('id = ?', intval($this->getRequest()->getParam('id'))); 		$livre = $livreTable->fetchRow($where); 		if ($this->getRequest()->isPost()) 		{ 			Zend_Loader::loadClass('Zend_Filter_StripTags'); 			$filter = new Zend_Filter_StripTags(); 			$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_->updateObject($livre, $livre_->getAdapter()->quoteInto('id = ?', $livre->id)); 				$this->_redirect('/livre/'); 				return; 			} 		} 		$this->view->livre = $livre; 		$this->view->action .= '/id/' . $livre->id; 		$this->render('ajouter'); 	} 	public function adminAction() 	{ 		$this->view->title .= ' .: Administration'; 		if ($this->getRequest()->isPost() && !$_SESSION['connecter']) 		{ 			if ($this->getRequest()->getPost('login') == 'admin' && $this->getRequest()->getPost('pass') == '1234') 			{ 				//bon password et bon login 				$_SESSION['connecter'] = true; 			} 		} 		elseif (!$_SESSION['connecter']) 		{ 			$this->render(); 			return; 		} 		$this->getResponse()->setRedirect($this->view->baseUrl . '/livre/'); 	} 	public function disadminAction() 	{ 		$this->view->title .= ' .: Déconnection'; 		if ($_SESSION['connecter']) 		{ 			$_SESSION['connecter'] = false; 		} 		$this->getResponse()->setRedirect($this->view->baseUrl . '/livre/'); 	} 	public function supprimerAction() 	{ 		//si on est aps connecter ->redirection sur le logeur 		if (!$_SESSION['connecter']) 			$this->getResponse()->setRedirect($this->view->baseUrl . '/livre/admin/'); 		$this->view->title .= ' .: Suppretion d\'un message'; 		$livre = $this->_getEmptyMsg(); 		$livre->id = intval($this->getRequest()->getParam('id')); 		$this->view->action .= '/id/' . $livre->id; 		if ($this->getRequest()->isPost()) 		{ 			$livre_ = new Livre(); 			if ($livre_->delete($livre_->getAdapter()->quoteInto('id = ?', $livre->id))) 				$this->view->message = 'Message supprimé!'; 			else 				$this->view->message = 'Message <b>non</b> supprimé!'; 			$this->view->message .= '<br /> Vous aller être rediriger!<br />'; 			$this->getResponse()->setRawHeader('Refresh:3; url=' . $this->view->baseUrl . '/livre/'); 		} 	} 	function init() 	{ 		session_name('goldbook'); 		session_start(); 		$_SESSION['connecter'] = isset($_SESSION['connecter'])?$_SESSION['connecter']:false; 		$this->view->connecter = $_SESSION['connecter']; 		$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; 	} }

Il nous faut créer un système de session, et une authentification pour l’administration. Ici les choses sont très basiques, car le but n’y est pas! Donc on utilise els session php et une authentification des plus basique (login: admin, password: 1234)!

Il nous faut encore modifier index.phtml

 <?php echo $this->render('header.phtml'); ?> <?php if ($this->connecter) echo '<a href="' , $this->baseUrl , '/livre/disadmin">Se déconnecter</a>'; ?> 	<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'); ?>

N’oublions pas d’ajouter les fichier admin.phtml et supprimer.phtml

suprimer.html

 <?php echo $this->render('header.phtml'); ?> 	<div id="livre"> 		<strong><?php echo $this->message; ?></strong> 		<form method="post" action="<?php echo $this->baseUrl ?>/livre/<?php echo $this->action ?>" name="form_nom"> 			<div id="livre_haut"> 				<button type="submit" name="del">Supprimer?</button> 			</div> 		</form> 		<br /> 		<br /> 	</div> <?php echo $this->render('footer.phtml'); ?>

admin.phtml

 <?php echo $this->render('header.phtml'); ?> 	<div id="livre"> 		<form method="post" action="<?php echo $this->baseUrl ?>/livre/admin" name="form_nom"> 			<div id="livre_haut"> 				Login : <input type="text" name="login"> 				<br /> 				Password : <input type="password" name="pass"> 				<br /> 				<button type="submit" name="admin">Poster</button> 			</div> 		</form> 		<br /> 		<br /> 	</div> <?php echo $this->render('footer.phtml'); ?>

Comme on peux le remarquer pas besoin d’un fichier modifier.phtml car nous réutilisons ajouter.phtml via $this->render(‘ajouter’);!

Similar Posts:

    None Found