2

テンプレートに次のものがあるとします。

[%- pages = [ 'one', 'two', 'three' ] -%]

<p>Go to page [%- ... -%]</p>

設定されEVAL_PERLていない(つまり、[%- PERL -%]ブロックを使用できない)とする[%- ... -%]と、次の出力を取得するには、上記の中に何を入れる必要がありますか?

<p>Go to page "a randomly picked element of pages"</p>
4

2 に答える 2

9

Templateではデフォルトでサポートされていないため、他のコード( Slashなど)randを介してインポートするか、Template :: Plugin :: Mathを使用する必要があります。例:

[%- USE Math -%]

[%- pages = [ 'one', 'two', 'three' ] -%]

<p>Go to page [%- pages.${ Math.rand(pages.size) } -%]</p>

出力:

$ tpage test.html
<p>Go to page three</p>
于 2009-12-10T15:16:39.253 に答える
4

複雑なことをする必要がある場合は、[%PERL%]セクションを使用して、TemplateToolkit構文をスキップします。

さらに、コントローラーでできる限り多くのことを把握し、使用する値のデータ構造を渡します。テンプレートで値を選択したり、新しい値を作成したりしないようにしています。ロジックをテンプレートに移動したら、別のテンプレートセットがある場合は、ロジックを再定義する必要があります。

于 2009-12-10T18:21:26.967 に答える