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}" />