8

PHPTAL でフォーム要素テンプレート ファイルを作成しています。オプションで、フィールドの id 属性を渡すことができるようにしたいと考えています...

これまでのところ、コードは次のようになります。

<xml>
  <tal:block metal:define-macro="text">
    <label tal:condition="php: !isset(hideLabel) || isset(hideLabel) && !hideLabel">${field/label}</label>
    <input name="${name}" type="text" value="${field/value}" />
    <p tal:condition="exists:field/error">${field/error}</p>
  </tal:block>
</xml>

これは宣伝どおりに機能します。追加したいのは、次のようなものです

<input name="${name}" tal:attributes="id exists: id $id | $name" value="${field/value}" />

オプションで METAL 呼び出しから ID を渡せるようにするため...

別の方法で行う必要がありますか?PHP: isset(id) ? $id : NULLおよびそのバリエーションを使用してみましたid="0"が、最終的に結果の HTML に .

何か案は?

4

3 に答える 3

5

他の誰かがそれを必要とする場合に備えて、1つの有効な答えは次のとおりです。

<xml>
  <tal:block metal:define-macro="text">
    <label tal:condition="not: exists:hideLabel">${field/label}</label>
    <input name="${name}" tal:attributes="id id | nothing" type="text" value="${field/value}" />
    <p tal:condition="exists:field/error">${field/error}</p>
  </tal:block>
</xml>

変数に渡される場所は、id、name、field という名前の配列、および hideLabel です。

ラベル テストを、より慣用的に TAL であると思われるものに単純化することもできたことに注意してください。

于 2010-09-17T12:16:26.277 に答える
3

すぐに使用される要素を含む DIV で VAR を設定します。

div class="" tal:define="VAR context.property"
    div class="" tal:attributes="class python:'grid_8 omega' if VAR else 'grid_8 alpha'"
于 2011-07-26T01:10:45.563 に答える