PHPTAL: изящная обработка неопределенных переменных

Если я использую переменную, которая не была помещена в область действия, PHPTAL выдает исключение. Есть ли способ заставить PHPTAL вернуться к грациозным значениям по умолчанию, например, оценить значение false в логическом контексте, пробел в строковом контексте и т. Д.?

2 ответа

Решение

Можете добавить "| nothing"СКАЗАТЬ выражения или использовать isset() в php: выражения.

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

Также более короткая версия:

<input type="text" name="id" value="${data/formvalues/id|nothing}" />
Другие вопросы по тегам