【问题标题】:Pass data across Hapi JS application跨 Hapi JS 应用程序传递数据
【发布时间】:2016-01-21 04:45:05
【问题描述】:

我想从域(如 es.domain.com、de.domain.com)中检测当前选择的语言,因此我需要将其传递给所有非静态路由处理程序和所有视图。

要检测一种语言,我需要一个请求对象。但是全局视图上下文可以更新请求对象不可访问的位置(在 server.views({}) 中)。 server.bind(将数据传递给路由处理程序)也仅适用于请求对象不可访问的情况。

Hapi 版本:11.1.2

【问题讨论】:

  • 您应该在 hapi 相关问题中提及您使用的 hapi 版本,因为框架经常变化。
  • @arb Hapi 版本:11.1.2,也添加到问题中

标签: hapijs


【解决方案1】:

你可以试试这样的:

server.ext('onPreResponse', function (request, reply) {
  if (request.response.variety === 'view') {
    request.response.source.context.lang = request.path;
  }
  reply.continue();
});

这会将lang 数据点附加到正在发送到视图中的上下文。您必须从 url 中提取 lang,因为 request.path 可能不是您真正想要的。

此外,如果您查看here,您会看到通过reply.view() 向每个视图提供了一些请求数据,如果区域设置/语言直接在这些数据点之一中可用,或者可以派生从他们那里,您可以完全跳过扩展点方法。

同样,这是假设 hapi 版本 10+。如果您使用的是旧版本,扩展点方法是您最好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2011-03-11
    • 2010-10-29
    相关资源
    最近更新 更多