2011-03-09 5 views
2

Je veux rendre les variables de session (ou autres) utilisables dans les vues sans me répéter à nouveau.variables dans les vues expressjs

je suis venu avec ceci:

res.render('index', viewVariables(req, res, params, {}); 

Et la viewVariables fonction:

function viewVariables(req, res, params, options) { 
    var returnObject = options || {locals:{}}; 
    var locals = { 
    currentUser: req.currentUser ? req.currentUser : false 
    }; 
    returnObject.locals = mergeObjects(locals, returnObject.locals, true); 
    return returnObject; 
}; 

Cest ne fonctionne pas dans la dernière version express.js (autre méthode render).

Existe-t-il une solution plus simple ou plus élégante pour cela? (enfin je suis sûr qu'il y en a!)

Répondre

4

Avez-vous regardé des dynamichelpers?

Depuis le site Web:

app.dynamicHelpers(obj) 

Registres des aides de vue dynamique. Les aides à la vue dynamique sont simplement les fonctions qui acceptent req, res, et sont évaluées par rapport à l'instance du serveur avant le rendu d'une vue. La valeur de retour de cette fonction devient la variable locale associée à .

app.dynamicHelpers({ 
    session: function(req, res){ 
    return req.session; 
    } 
}); 

La plupart du temps j'aime en faire une fonction à la place. De cette façon, il ne sera appelé que lorsque vous appelez la fonction dans vos vues.

+1

ouais, RTFM! THX. – fluxsaas

+0

Pas de problème: P .. – Alfred

0

express 2.x

app.dynamicHelpers({ 
    session: function(req, res){ 
    return req.session; 
    } 
}); 

express v.3

app.use(function(req, res) { 
    res.locals.session = req.session; 
}); 
Questions connexes