0

新しいアプリが作成されると、main.htmlとindex.htmlの2つのビューが表示されます。mainが明示的にレンダリングされることはなく、次のように拡張されます。

#{extends 'main.html' /}

別のビュー(index.html)からのみ拡張されている場合、変数をビュー(main.html)に渡すにはどうすればよいですか?

4

2 に答える 2

3

renderメソッドに渡されると、通常どおり使用可能になります。拡張とインクルードを含むビュー全体は、Groovyテンプレートエンジンによってレンダリングされます。

ただし、main.html通常はすべてのビューで拡張される場合は、次のように、注釈renderArgsを使用して常にマップに追加するのが最善のオプションです。@Beforeこれにより、常に利用可能になり、繰り返ししない(DRY)ことが保証されます。

@Before
private void setup() {
    renderArgs.put("somekey", "somevalue");
}

このように、レンダリング呼び出しのたびにレンダリングメソッドにキーを渡す必要はありません。

次に、ので、の標準的な方法を使用して簡単にmain.htmlアクセスできます。somekey$somekey

于 2012-06-04T12:29:40.107 に答える
1

Codemwnciは、コントローラー内からレイアウトテンプレートに変数を渡す方法に関するソリューションを提供します。通常のビューからレイアウトビューに変数を渡す方法は次のとおりです。

index.htmlでは、次のようなことができます。

#{set title:'My title'/}

また、main.htmlでは、index.htmlで設定された変数を「取得」できます。

<h1>#{get 'title'/}</h1>

RythmまたはJapidテンプレートエンジンを使用している場合は、extendsステートメントで変数をmain.htmlに直接渡すことができます。

Rythmテンプレートエンジンで、main.htmlが次のようになっているとします。

@args String title
...
<h1>@title</h1>
...

次のステートメントを使用して、index.htmlのメインテンプレートを拡張します。

@extends(main, "my title")
于 2012-06-04T12:31:01.507 に答える