【问题标题】:How do I conditionally add an id attribute in TAL (PHPTAL)?如何有条件地在 TAL (PHPTAL) 中添加 id 属性?
【发布时间】:2010-09-17 11:17:56
【问题描述】:

我正在 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 及其变体,但最终在生成的 HTML 中使用 id="0"

有什么想法吗?

【问题讨论】:

    标签: conditional template-tal phptal


    【解决方案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。

    【讨论】:

      【解决方案2】:

      在包含即将使用的元素的 DIV 处设置 VAR:

      div class="" tal:define="VAR context.property"
          div class="" tal:attributes="class python:'grid_8 omega' if VAR else 'grid_8 alpha'"
      

      【讨论】:

        【解决方案3】:

        在 PHP 中:

        <div id="contentCenter" tal:attributes="id 
        
        php:isset(variable)&&isset(variable.property)?'IDVALUE':NULL">
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-01-21
          • 2019-04-13
          • 2014-03-18
          • 2016-08-01
          • 1970-01-01
          • 2012-10-09
          相关资源
          最近更新 更多