如何在路由中使用本地参数

时间:2017-08-07 21:46:55

标签: node.js keystonejs

每个人, 获取本地参数然后在路由中传递它时遇到问题。 我在routes / middleware.js

中有这个代码
exports.detectLang = function(req, res, next) {
var match = req.url.match(/^\/(de|en)([\/\?].*)?$/i);

if (match) {
    req.setLocale(match[1]);
    // Make locale available in template
    // (necessary until i18n 0.6.x)
    res.locals.locale = req.getLocale();
    // reset the URL for routing


    req.url = match[2] || '/';
    console.log(response);
} else {
    // Here you can redirect to default locale if you want
    console.log("does not match")
}

next();
     };

这会检测网址中的de或en部分,并使用de或en

设置本地变量“Locale”

现在位于routes / view / index.js

我想获取本地参数“Locale”并将其放入路线中 像这样的东西

    // Setup Route Bindings
exports = module.exports = function (app) {
    // Views

    app.get('/'+locale, routes.views.index);

    app.all('/'+locale+'employees', routes.views.employees);

};

但我无法从中间件到index.js

获取该locale参数

1 个答案:

答案 0 :(得分:0)

您可以在路线中使用参数“区域设置”:

app.get('/:locale', routes.views.index);

...然后在中间件中使用param:

var match = req.params.locale.match(/^\/(de|en)([\/\?].*)?$/i);