Comment définir les messages flash dans Hapi JS?

Bien, j’ai essayé d’utiliser le flash hapi mais cela n’a pas fonctionné pour moi. Donc, tous ceux qui utilisent des messages flash dans Hapi JS

Oui, vous voudrez utiliser Yar . Une fois que vous l’avez enregistré en tant que plugin, dans chaque gestionnaire, vous pouvez utiliser:

request.session.flash('error', 'There was an error.'); 

Pour obtenir le message flash, utilisez request.session.flash (‘error’). Ce qui retournera tous les messages “d’erreur” actuellement dans le flash. Cela effacera également les spécificités du flash.

Je trouve utile l’extension onPreResponse de récupérer tous les messages flash et de les append au contexte par défaut. Si vous finissez par le faire, assurez-vous d’enregistrer le point d’extension avant d’enregistrer yar.

En supposant que votre site / api soit enregistré en tant que plug-in sur un serveur:

 exports.register = function (server, options, next) { server.ext('onPreResponse', internals.onPreResponse); server.register([ { register: require('yar'), options: { cookieOptions: { password: process.env.SECRET_KEY } } } ], function (err) { Hoek.assert(!err, 'Failed loading plugin: ' + err); next() }; internals.onPreResponse = function (request, reply) { var response = request.response; if (response.variety === 'view') { if (!response.source.context) { response.source.context = {}; } // This can be slimmed down, but showing it to be explicit var context = response.source.context; var info = request.session.flash('alert'); var error = request.session.flash('error'); var notice = request.session.flash('notice'); var success = request.session.flash('success'); context.flash = {}; if (info.length) { context.flash.info = info; } if (error.length) { context.flash.error = error; } if (notice.length) { context.flash.notice = notice; } if (success.length) { context.flash.success = success; } return reply.continue(); } return reply.continue(); }; 

Et un gestionnaire ressemblerait à quelque chose comme ceci:

 exports.login = { handler: function (request, reply) { // Do login stuff here request.log(['error', 'login'], err); request.session.flash('error', 'There was an error logging in. Try again.'); return reply.redirect('/'); }, auth: false };