Les routes de Sails.js

sails

Créer une route

Maintenant que notre model est défini et que notre controller est prêt, nous allons créer une route qui permettra d’exécuter une fonction de notre controller lorsque l’utilisateur se rendra sur une page que nous aurons définie.

Les routes sont définies dans le fichier routes.js qui se trouve dans le dossier config. Ouvrez-le et ajoutez ceci :

'/create_article': {
    controller: 'ArticleController',
    action: 'createArticle',
}

Important : N’oubliez pas d’ajouter une virgule après l’accolade fermante de la route qui était déjà définie. Sinon, vous allez avoir une jolie erreur.

Vous devriez avoir quelque chose comme ceci :

module.exports.routes = {

  '/': {
    view: 'homepage'
  },

  '/create_article': {
    controller: 'ArticleController',
    action: 'createArticle',
  },

};

Plutôt qu’une longue explication, testez par vous-même. Redémarrer votre serveur (CTRL + C suivit de « sails lift »), et rendez-vous à cette adresse : http://localhost:1337/create_article.

Sur votre navigateur, rien ne se passage. Mais dans votre console, vous avez un message :

Article créé : Super titre, ayant pour ID : 1

Que s’est-il passé ? Dans notre route, nous avons défini la page create_article. Ensuite, nous avons indiqué avec quel controller la page devra travailler et quelle fonction elle devra exécuter. Notre page create_article exécute donc la fonction createArticle() du controller ArticleController.

Actuellement, les titres et les contenus de nos articles sont tous identique étant donné que nous avons écrit les valeurs de nos variables en dur. Heureusement pour nous, il est possible de rendre tout cela dynamique !

Modifiez l’URL de votre route comme ceci :

'/create_article/:title&:content': {
    controller: 'ArticleController',
    action: 'createArticle',
  },

Nous avons ajouté :title&:content. :title et :content sont des paramètres de notre URL. Ils pourront prendre la valeur que nous leur attribueront. Le fait office de séparateur. Nous aurions très bien pu utiliser un slash ou un underscore.

Retournons ensuite dans notre ArticleController. Nous avons modifier la route, nous allons donc modifié la fonction createArticle de notre controller :

	createArticle: function(req, res) {
	    Article.create( { titre: req.param('title'), content: req.param('content') }, function(err,created){
	    if(!err) {
	        console.log('Article créé : '+created.titre+', ayant pour ID : '+created.id+'.');
	    }
	    else {
	       return err;
	    }
	    });
	}

Nous avons modifié les valeurs que nous attribuons aux attributs titre et content de notre model en utilisant la méthode .param() sur la variable req. Cette méthode nous permet de récupérer un paramètre d’une requête HTTP. Comme nous avons défini en paramètre de notre URL title et content, nous pourrons récupérer leur valeurs avec cette méthode.

Redémarrez votre serveur et rendez-vous à cette adresse : http://localhost:1337/create_article/un supe titre&Un super contenu. Votre console vous informe alors de votre nouvel article et de son identifiant. Essayez donc de modifier les deux valeurs en paramètre de l’URL et d’en ajouter de nouveaux.

Maintenant, nous souhaitons afficher tout cela dans une jolie page HTML. Ça ce passe ici avec les view !

2 réflexions au sujet de « Les routes de Sails.js »

  1. Salut

    Bonjour,
    J’aurais aimé savoir si il était possible de récupérer les données non pas par l’intermédiaire de l’URL mais plutôt d’un formulaire html. Je suppose que je devrais utiliser le « title » et « content » dans mon formulaire mais je vois pas trop comment =)
    Merci par avance.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *