Yesod 布局中的站点范围变量(django 上下文处理器模拟)

Posted

技术标签:

【中文标题】Yesod 布局中的站点范围变量(django 上下文处理器模拟)【英文标题】:Sitewide variables in Yesod layout (django context processors analog) 【发布时间】:2012-06-24 06:33:05 【问题描述】:

是否有可能在 Yesod 中有一个站点范围的变量?假设,我有一个主菜单,哪些条目是从 DB 收集的,并在每个页面上呈现:我应该在每个处理程序中手动获取条目吗?

我尝试在 Foundation.hs 中的 instance Yesod App defaultLayout 声明中执行此操作:

    instance Yesod App where
    ...

    defaultLayout widget = do
      ...
      entries <- runDB $ selectList [RubricOnTop ==. True] []
      ...

但这无法编译:我的类型不匹配 EntityRubricGeneric

解决方案

    $forall rubric <- map entityVal rubrics
      ...

在默认布局包装器.hamlet 中。尚未在 defaultLayout 函数中找到解决方案。

【问题讨论】:

【参考方案1】:

您显示的代码很好,但是在使用entries 时需要记住,类型是Entity Rubric,而不是Rubric

【讨论】:

以上是关于Yesod 布局中的站点范围变量(django 上下文处理器模拟)的主要内容,如果未能解决你的问题,请参考以下文章

“类型变量不明确”在 Haskell Yesod 中使用 Persistent

Django 1.11 如何从保存在 CMS 站点模型中的 HTML 中显示模板变量

Django 模板继承破坏了站点布局

Fay 代码中的持久模型类型

Yesod:在 ghci 中运行“runDB”函数时键入实例错误

内联 django shell 与 python shell 中的变量范围