tags:

views:

152

answers:

1

If I use a variable that hasn't been put into the scope, PHPTAL throws an exception. Is there any way of making PHPTAL fall back to graceful defaults, for example evaluating to false in a boolean context, to a blank in a string context, etc?

+1  A: 

You can add "| nothing" to TALES expressions or use isset() in php: expressions.

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

If you have larger bit of code that relies on a certain variable, then use exists: modifier:

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

If you want to fake existence of any variable, it can be done, but I don't recommend it (it will hide typos):

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

$p = new PHPTAL();
$p->getContext()->setGlobal(new FakeAll());
porneL