PHPTAL条件属性

时间:2011-12-29 15:55:52

标签: html template-tal phptal

鉴于金属宏看起来像这样:

<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语法可以解决这个问题,但是在nothing为空的情况下,这只会回到value,这对我没有帮助,因为我需要比较它是一个价值。这样的事情(不起作用):

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

1 个答案:

答案 0 :(得分:1)

这应该足够了:

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

PHPTAL了解selectedchecked等属性,并将布尔值转换为正确的值。

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