1

私は表形式のデータ用にさまざまなテーブルをかなり作成していることに気づき、(PHP コードではなく) 呼び出し元のテンプレートで定義されたデータ構造に基づいてテーブルを動的に作成できるマクロを作成したいと考えています。簡単な例を次に示します。

<!-- Define the macro -->
<tal:block metal:define-macro="table">
    <table>
        <tr tal:repeat="row data">
            <td tal:repeat="col row" tal:content="col" />
        </tr>
    </table>
</tal:block>

<!-- Use the macro -->
<tal:block tal:define="data ???" metal:use-macro="table" />

私が探しているのは、dataPHPTAL 自体から (配列構造を) 定義する方法です。これを PHP でテンプレート変数として定義できない理由 (例$tpl->data = array(...)) は、データの順序とレイアウトがテンプレートに属しているためです。たとえば、テーブルの X 軸と Y 軸を反転させたい場合、PHP コードではなく、テンプレートを変更するだけで済みます。


編集:

例を挙げると、任意のテンプレート変数foobar、および があるとしbazます。これらをテンプレートで次のように使用できます。

<span tal:content="foo" /><br />
<span tal:content="bar" /><br />
<span tal:content="baz" />

これらの変数を行と列の 2 次元データ構造に構築し、テーブル生成マクロに入力するにはどうすればよいですか? このようなもの(注:これは実際には機能しません):

<tal:block tal:define="data [foo, bar; baz]" metal:use-macro="table" />

マクロからの目的の出力は次のとおりです。

<table>
    <tr>
        <td>foo</td>
        <td>bar</td>
    </tr>
    <tr>
        <td>baz</td>
    </tr>
</table>

後で、 と の位置を交換しfooたいbar場合は、テンプレートを変更して の定義を に変更するだけで済みdataますdata [bar, foo; baz]

4

2 に答える 2

1
于 2011-12-14T00:07:55.473 に答える
0

汎用テーブル生成の場合:PHPTAL:列ヘッダーと値を繰り返します

<table>
    <thead>
        <tr>
            <th tal:repeat="r results/0">${repeat/r/key}</th>
        </tr>
    </thead>
    <tbody>
        <tal:block tal:repeat="r results">
        <tr>
           <td tal:repeat="t r">${t}</td>
        </tr>
        </tal:block>
    </tbody>
</table>
于 2013-01-28T18:28:05.503 に答える