【问题标题】:PHPTAL Conditional AttributePHPTAL 条件属性
【发布时间】:2011-12-29 15:55:51
【问题描述】:

给定一个如下所示的金属宏:

<tal:block metal:define-macro="foo">
    <option value="1">Foo</option>
    <option value="2">Bar</option>
    <option value="3">Baz</option>
</tal:block>

还有一个使用如下宏的模板:

<select>
    <tal:block tal:define="selectedValue 2" metal:use-macro="foo" />
</select>

我需要在宏中添加什么,以使生成的 HTML 看起来像这样:

<select>
    <option value="1">Foo</option>
    <option value="2" selected="selected">Bar</option>
    <option value="3">Baz</option>
</select>

我使用php: 表达式尝试了各种不同的方法,甚至定义了我自己的 TALES 函数,但似乎没有什么能满足我的需求。

浏览器将任何出现selected 属性的选项视为实际选中。这意味着selectedselected=""selected="foo" 等都会选择该选项。 PHPTAL 有一个内置的attribute value | nothing 语法可以解决这个问题,但是这只会在value 为空的情况下回退到nothing,这对我没有帮助,因为我需要将它与一个值进行比较。像这样的东西(不起作用):

<option value="2" tal:attributes="selected (selectedValue == 2 ? 'selected' : NULL) | nothing">Bar</option>

【问题讨论】:

    标签: html template-tal phptal


    【解决方案1】:

    这就足够了:

    tal:attributes="selected php:selectedValue == 2"
    

    PHPTAL 知道 selectedchecked 等属性,并将布尔值转换为正确值。

    php:selectedValue == 2 ? 'selected' : NULL 也可以。

    【讨论】:

    • 如果我必须将“selectedValue”与循环中的重复/项目/键进行比较(例如,选择标签中的选项)。
    • @Meglio 在php: 中使用repeat.item.key
    • 不知道这个。谢谢。
    • 我想知道如何在不求助于 php 的情况下做到这一点:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多