PHPTAL: изящная обработка неопределенных переменных - PullRequest
2 голосов
/ 28 января 2009

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

Ответы [ 2 ]

5 голосов
/ 29 марта 2009

Вы можете добавить "| nothing" к выражениям TALES или использовать 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());
0 голосов
/ 02 июля 2013

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

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