Inside a file named controllers.js
, I have declared the following variables :
var indexCtrl = require('./index'),
offerCtrl = require('./offer'),
setLocaleCtrl = require('./setLocale'),
specificationsCtrl = require('./specifications');
and also this object :
var routes = {
indexCtrl: {
'fr-FR' : '/accueil',
'en-EN' : '/home',
'de-DE' : '/startseite'
},
offerCtrl: {
'fr-FR' : '/offre',
'en-EN' : '/offer',
'de-DE' : '/angebot'
},
setLocaleCtrl: {
'fr-FR' : '/setLocale/:locale',
'en-EN' : '/setLocale/:locale',
'de-DE' : '/setLocale/:locale'
},
specificationsCtrl: {
'fr-FR' : '/specifications',
'en-EN' : '/specifications-en',
'de-DE' : '/spezifikationen'
}
};
To illustrate, here is an example of the required index.js :
'use strict';
var IndexModel = require('../models/index');
exports.route = function(req, res, locale) {
console.log(locale);
var model = new IndexModel();
res.render('index', model);
};
How can I utilize the indexCtrl defined within the var route
as the indexCtrl declared above (with the require) ?
EDIT : For instance :
for (var ctrl in routes) {
var ctrlContent = routes[ctrl];
for (var language in ctrlContent) {
var route = ctrlContent[language];
//router.get(route, ctrl);
console.log('%s, %s, %s', ctrl, language, route);
}
}
The log output displays :
indexCtrl, fr-FR, /accueil
indexCtrl, en-EN, /home
indexCtrl, de-DE, /startseite
offerCtrl, fr-FR, /offre
offerCtrl, en-EN, /offer
offerCtrl, de-DE, /angebot
setLocaleCtrl, fr-FR, /setLocale/:locale
setLocaleCtrl, en-EN, /setLocale/:locale
setLocaleCtrl, de-DE, /setLocale/:locale
specificationsCtrl, fr-FR, /specifications
specificationsCtrl, en-EN, /specifications-en
specificationsCtrl, de-DE, /spezifikationen
This reveals that the route /accueil
should be displayed in the fr-FR locale using the controller indexCtrl. However, attempting to use ctrl.route
- like indexCtrl.route- which is specified in the require statement results in an error message :
Route.get() requires callback functions but got a [object Undefined]
.