渲染一个播放框架2.0模板的一部分(Rendering a portion of a Play fr

2019-09-18 09:09发布

我想打电话从一个模板,而不是在模板中标记(功能)控制器渲染。 这样一来,我可以用它来从AJAX调用页面的局部效果图。 当然,我可以分离的呼叫那些呈现几个模板形式的成分,但我认为这将是更清洁的另一种方式。

我试图做的是这样的:

formpage.scala.htm

@()
<html>
...

@content

...
</html>


@**********************************
* Helper generating form *
***********************************@
@content() = {

<h3 class="form-heading">@Messages("employees")</h3>

@form(routes.AppController.save()) {    

@inputText...
...

}

并使用AJAX呈现内容的功能,而无需将其分离到单独的文件。 这样我可以呈现模板的部分,而在多个文件分段来。

Answer 1:

事实上标签仅仅是较小的模板,所以你可以使用标签都 - 使用模板和控制器,最简单的例子:

/app/views/tags/mytag.scala.html

This is my tag...

在控制器可以呈现为:

public static Result createFromTag(){
    return ok(views.html.tags.mytag.render());
}

在其他的模板,你只需插入:

....
And there is my tag rendered
<b>@tags.mytag()</b>

更多的灵活性

当然,因为它的模板ERGO斯卡拉功能以及你可以通过一些PARAMS它甚至HTML正文:

/app/views/tags/othertag.scala.html

@(headline: String)(body: Html)

<h3>@headline</h3>
<div class="tagsBody">
    @body
</div>

在控制器可以呈现为:

public static Result createFromTag(){

    return ok(
            views.html.tags.othertag.render(
                    "Head from controller",
                    new play.api.templates.Html("This code becomes from <i>controller</b>")
            )
    );
}

(当然你可以导入这两个在行动短的代码import play.api.templates.Html;以及import views.html.tags.othertag

最后,在您的模板,你可以使用标签为:

And there is my tag rendered <br/>
@tags.othertag("Head from template"){
    some content for the tag's body from <b>The Template!</b>
}

最后。

你会发现在标签的说明文档 。



文章来源: Rendering a portion of a Play framework 2.0 template