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] []
...
但这无法编译:我的类型不匹配 Entity
和 RubricGeneric
。
解决方案
$forall rubric <- map entityVal rubrics
...
在默认布局包装器.hamlet 中。尚未在 defaultLayout 函数中找到解决方案。
【问题讨论】:
【参考方案1】:您显示的代码很好,但是在使用entries
时需要记住,类型是Entity Rubric
,而不是Rubric
。
【讨论】:
以上是关于Yesod 布局中的站点范围变量(django 上下文处理器模拟)的主要内容,如果未能解决你的问题,请参考以下文章
“类型变量不明确”在 Haskell Yesod 中使用 Persistent
Django 1.11 如何从保存在 CMS 站点模型中的 HTML 中显示模板变量