Наследование шаблона ритма

У нас есть общий шаблон верхнего/нижнего колонтитула в качестве родительского шаблона, который мы будем повторно использовать для 100 подшаблонов. Директива extends не поддерживает это...

Когда я просматриваю документацию Rythm, я нашел способ добиться этого с помощью директив include/invoke, но основной целью директивы include/invoke является вызов общей функции. Директива Extends поддерживается обратным образом, помещая содержимое основного шаблона с директивой рендеринга в качестве родительского и шаблона верхнего/нижнего колонтитула в качестве подшаблона, но вариант использования в реальном времени совершенно другой.

Это мое понимание правильно? Есть ли способ решить мою проблему?

Отредактировано:

Я закодировал, как показано ниже, чтобы достичь этого:

нижний колонтитул.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>

Что я сделал, так это с помощью вызова метода include/invoke я получил результат, но когда я использую расширения, он не работает. Если возможно, можете ли вы решить мой случай, используя расширения?


person suresh    schedule 20.10.2016    source источник
comment
Я не понимаю, почему вы говорите, что директива Extends не поддерживает это. Директива @extends предназначена для реализации макета шаблона. См. fiddle.rythmengine.org/#/editor/.   -  person Gelin Luo    schedule 21.10.2016
comment
Я добавил пример кода, который я использую в своем приложении. Пожалуйста, посмотрите на это.   -  person suresh    schedule 21.10.2016


Ответы (1)


Чтобы использовать @extends для достижения того же эффекта, у вас должно быть:

layout.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();
}
person Gelin Luo    schedule 21.10.2016