如何在网站的每个页面上实现一个小部件(由数据库调用产生)?
我有一个带侧边栏的传统网络应用程序。侧边栏包含以下数据:
如官方文档中所示,可以在模板内呈现模板。这是一个有趣的功能,但还不够。因为我需要数据库中的数据在我的小部件中呈现。
这意味着:
我想要做的是Symfony2框架中存在的东西。我希望能够直接呼叫控制器。
{% render MyController:MyActionMethod %}
如何实现这种机制?
PS:是的,我搜索了一下。发现此问题“类似问题”:How to avoid passing parameters everywhere in play2?答案 0 :(得分:1)
首先介绍两种解决方案 - 它将来自控制器的数据作为某种对象传递,然后使用tags
进行渲染。
第二个解决方案是相反的,因为在Play 2
每个模板只是一个Scala函数,你也可以在控制器中调用一些方法,这将获得所需的数据并渲染子模板。
即。从模板使用
访问controllers.MyController.myMethod(Integer a, Integer b)
<div>
@MyController.myMethod(1,2)
</div>
答案 1 :(得分:0)
您可以在控制器中编写静态方法,该方法返回play.api.templates.Html(或play.mvc.Content)而不是Result。
public static Content widget() {
Data fetchedData = fetchDataFromTheDatabase();
return views.html.widget.render(fetchedData);
}
在您看来,只需调用此静态方法。