2

如果我使用尚未放入范围的变量,PHPTAL 会引发异常。有没有办法让 PHPTAL 回到优雅的默认值,例如在布尔上下文中评估为 false,在字符串上下文中评估为空白等?

4

2 回答 2

5

您可以将“ | nothing”添加到 TALES 表达式或使用isset()inphp:表达式。

<p tal:attributes="class php:isset(class)?class:NULL" 
   tal:content="variable | nothing" />

如果您有大量代码依赖于某个变量,请使用exists:修饰符:

<div tal:condition="exists:variable">
…
</div>

如果你想伪造任何变量的存在,它可以做到,但我不推荐它(它会隐藏错别字):

class FakeAll extends stdClass
{
    function __get($var){return "";}
    function __isset($var){return true;}
}

$p = new PHPTAL();
$p->getContext()->setGlobal(new FakeAll());
于 2009-03-29T00:03:23.423 回答
0

还有更短的版本:

<input type="text" name="id" value="${data/formvalues/id|nothing}" />
于 2013-07-02T14:03:31.937 回答