0

100 個のサブ テンプレートに再利用する親テンプレートとして、共通のヘッダー/フッター テンプレートがあります。Extends ディレクティブはこれをサポートしていません...

Rythm のドキュメントを調べたところ、include/invoke ディレクティブによってこれを実現する方法が見つかりましたが、include/invoke ディレクティブの主な目的は共通関数を呼び出すことです。Extends ディレクティブは、render ディレクティブを親としてメイン テンプレート コンテンツを配置し、サブテンプレートとしてヘッダー/フッター テンプレートを配置することにより、逆の方法でサポートしていますが、リアルタイムのユースケースはまったく異なります

それは私の理解で正しいですか?私の問題を解決する方法はありますか?

編集:

私はそれを達成するために以下のようにコーディングしました:

footer.html

@def header1() {
    <h3>This is footer1 section</h3>
}

@def header2() {
    <h3>This is footer2 section</h3>
}

template1.html

@include("footer.html")
@args String who
<html>
    <head>
        <title>Hello world from Rythm</title>
    </head>
    <body>
        <h1>Hello @who</h1>
        @if(footer.equals("footer1){
            @header1();
        } else {
            @header2();
        }
    </body>
</html>

私が行ったことは、インクルード/インボークメソッド呼び出しの助けを借りて結果を得ましたが、拡張を使用すると機能しません。可能であれば、拡張を使用して私のケースを解決できますか?

4

1 に答える 1

2

同じ効果を得るために使用@extendsするには、次のものが必要です。

レイアウト.html

<html>
    <head>
        <title>Hello world from Rythm</title>
    </head>
    <body>
        @render()
    </body>
</html>

header1.html

<h3>This is footer1 section</h3>

header2.html

<h3>This is footer2 section</h3>

template.html

@extends(layout)
@args String who, String footer

<h1>Hello @who</h1>
@if(footer.equals("footer1")){
    @header1();
} else {
    @header2();
}
于 2016-10-21T10:17:41.260 に答える