Welcome to the Cookbook

loading...
Please login to continue

10.1.9 Ajouter des Posts

Lire depuis la base de données et nous afficher les posts est un bon début, mais lançons-nous dans l'ajout de nouveaux posts.

D'abord, commençons par créer une action add() dans le Contrôleur Posts :

<?php
class PostsController extends AppController {
	var $name = 'Posts';

	function index() {
		$this->set('posts', $this->Post->find('all'));
	}

	function view($id) {
		$this->Post->id = $id;
		$this->set('post', $this->Post->read());

	}

	function add() {
		if (!empty($this->data)) {
			if ($this->Post->save($this->data)) {
				$this->flash('Votre post a été sauvegardé.','/posts');
				$this->redirect(array('action' => 'index'));
			}
		}
	}
}
?>
  1. <?php
  2. class PostsController extends AppController {
  3. var $name = 'Posts';
  4. function index() {
  5. $this->set('posts', $this->Post->find('all'));
  6. }
  7. function view($id) {
  8. $this->Post->id = $id;
  9. $this->set('post', $this->Post->read());
  10. }
  11. function add() {
  12. if (!empty($this->data)) {
  13. if ($this->Post->save($this->data)) {
  14. $this->flash('Votre post a été sauvegardé.','/posts');
  15. $this->redirect(array('action' => 'index'));
  16. }
  17. }
  18. }
  19. }
  20. ?>

Voici ce que fait l'action add() : si le formulaire de données envoyé n'est pas vide, nous essayons d'enregistrer les données en utilisant le modèle Post. Si pour une raison quelconque cela ne s'enregistre pas, nous effectuons juste un rendu de la vue. Cela nous donne une chance de voir les erreurs de validation de l'utilisateur et d'autres alertes.

Lorsqu'un utilisateur utilise un formulaire pour POSTER des données à votre application, cette information est disponible dans $this->data. Vous pouvez vous servir de pr() pour l'afficher si vous souhaitez voir à quoi cela ressemble.

La fonction $this->flash() appelée ici est une méthode du contrôleur qui affiche un message à l'utilisateur pendant une seconde (en utilisant la mise en page des messages flashs), puis redirige l'utilisateur vers une autre URL (/posts, dans ce cas). Si DEBUG est paramétré à 0, $this->flash() redirigera automatiquement, au contraire, si DEBUG est > à 0, vous serez en mesure de voir la mise en page des flashs et de cliquer sur le message pour réaliser la redirection.

L'appel de la méthode save() vérifiera les erreurs de validation et interrompra l'enregistrement s'il y en a une qui survient. Nous verrons la façon dont les erreurs sont traitées dans les sections suivantes.