Неопределенный метод flash в представлении node.js
Проблема в доступе flash
messages
на просмотр в node.js
В моем контроллере
this.req.flash('info','successfully submited');
this.redirect("/home");
В моем домашнем виде я не могу получить flash
messages
как
req.flash('info');
РЕДАКТИРОВАТЬВ контроллере
self.req.flash('message','hello');
Ввиду
<%= req.flash('message) %>
В server.js
app.configure(function (){
app.use(express.cookieParser());
app.use(express.session({ secret:'yoursecret',cookie: { maxAge: 24 * 60 * 60 * 1000 }}));
app.use(passport.initialize());
app.use(locomotive.session());
app.use(flash());
app.use(passport.session());
app.use(app.router);
app.dynamicHelpers({ messages: require('express-messages') });
});
У меня есть локомотивная основа.
2 ответа
Переместить ваш app.use(flash())
выше в порядке... см. ниже. Flash необходимо инициализировать перед паспортом, чтобы он был распознан и доступен для паспорта.
app.configure(function (){
app.use(express.cookieParser());
app.use(express.session({ secret:'yoursecret',cookie: { maxAge: 24 * 60 * 60 * 1000 }}));
app.use(flash()); // moved this up a few lines
app.use(passport.initialize());
app.use(locomotive.session());
app.use(passport.session());
app.use(app.router);
app.dynamicHelpers({ messages: require('express-messages') });
});
Пожалуйста, посмотрите пример tempdata https://github.com/MKxDev/TempData
var tempData = require('tempdata');
var app = express();
app.configure(function() {
...
// This has to appear BEFORE the router
app.use(express.cookieParser());
app.use(express.session({ secret: 'your_super_secret_session_key' })); // please change this!
app.use(tempData);
...
});
...
// Routes
app.get('/', function(req, res) {
// Retrieve tempData value here. It won't exist unless the request
// was redirected
var tempVal = JSON.stringify(req.tempData.get('test_val'));
res.render('index', { title: 'Express', temp: tempVal });
});
app.post('/', function(req, res) {
// Set tempData value here
req.tempData.set('test_val', { x: 'Hello World!' });
res.redirect('/');
});