【问题标题】:PHPTAL: graceful treatment of undefined variablesPHPTAL:优雅地处理未定义的变量
【发布时间】:2009-01-27 23:36:08
【问题描述】:

如果我使用了一个没有放入作用域的变量,PHPTAL 会抛出一个异常。有什么方法可以让 PHPTAL 回退到优雅的默认值,例如在布尔上下文中评估为 false,在字符串上下文中评估为空白等?

【问题讨论】:

    标签: phptal template-tal


    【解决方案1】:

    您可以在 TALES 表达式中添加“| nothing”或在php: 表达式中使用isset()

    <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());
    

    【讨论】:

      【解决方案2】:

      还有更短的版本:

      <input type="text" name="id" value="${data/formvalues/id|nothing}" />
      

      【讨论】:

        猜你喜欢
        • 2011-08-08
        • 1970-01-01
        • 2020-02-29
        • 1970-01-01
        • 2017-03-04
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        • 2015-11-19
        相关资源
        最近更新 更多