I want my templates to be as simple as possible.
They should not include any logic at all. So I never use php-modifier and I 
would also like to avoid some kind of AND or OR logical operators (although 
there are the smaller problem...).

But a template needs what I call "state". The simplest example for me is the 
odd-even problem:

        <li tal:repeat="item items" class="${what to do here, odd or even?}" />

The state of the rendering for the li-tag depends on the current item. So 
instead of writing php or some complex "a ? B : c" syntax, I just want to have 
somebody (model) who decides what to do for the current li.

Of course you can write a modifier for this like 
"css-odd-or-even:repeat/item/odd". But I don't like modifiers the way they are 
implemented now. That is for two reasons:
1. You have do define something global (function or static method I think?) to 
let phptal find the modifier. You can't just register modifiers with the 
phptal-object like you can do it with filters or resolvers for example.
2. Each modifier has to parse it's argument(s) on his own.

What I would like to have is an object, which I can call a method on and pass 
arguments to.

So I would also say that you should strip the logical operators but implement a 
way to pass arguments to a method of a variable within the phptal context:

$p = new PHPTAL('template.html');
$p->oddHelper = new OddHelper();
$p->items = array(1, 2, 3);

        <li tal:repeat="item items" class="${oddHelper(repeat/item/odd)}" />

I think it would be much simpler to extend the current tal-syntax only to allow 
parameters than to introduce logical operators. And it would keep the syntax 

Kind regards,

-----Ursprüngliche Nachricht-----
Von: phptal-boun...@lists.motion-twin.com 
[mailto:phptal-boun...@lists.motion-twin.com] Im Auftrag von Ivo Võsa
Gesendet: Montag, 4. Oktober 2010 11:54
An: Template Attribute Language for PHP
Betreff: Re: [PHPTAL] Re: AW: Logical operators in PHPTAL

Kornel Lesiński wrote:
> On 1 Oct 2010, at 18:46, Moritz Baumann wrote:
>>> I think the next step would be to work out syntax exactly:
>>> http://phptal.org/wiki/doku.php/improvedtales
>> Hm, that page mentions a lot more than just logical operators. I 
>> guess that’s what the negative feedback was about, not logical operators 
>> inside tal:condition.
>> The main difference between PHPTAl and other template engines is that 
>> the syntax is quite simple and that the templates look "clean". IMHO, 
>> function calls and an equivalent to the ?: operator would add 
>> unnecessary complexity to PHPTAL and spoil exactly what makes PHPTAL 
>> unique and great. Support for logical operators inside tal:condition, 
>> on the other hand, would make the php: modifier more or less unnecessary.
> I look at this differently: these are things I need, whether their syntax is 
> nice or not, so I'd prefer to make their syntax nicer.
> Perhaps arguments to functions is a step too far (and authors should be 
> required to write expression modifiers for these), but setting of class name 
> based on condition is a very common pattern and ternary operator is an awful 
> way to do it.
i personaly would like to avoid "php:" as much as possible, so for setting 
class name i use things like

function phptal_tales_iftrue($src, $nothrow) { $src = explode(',', trim($src)); 
return '(' . phptal_tales(trim($src[0]), $nothrow) . ' ? ' . 
phptal_tales(trim($src[1]), $nothrow) . ' : null)'; }

<li tal:repeat="item list" class="${iftrue: repeat/item/end, 'last'}">...</li>

PHPTAL mailing list

PHPTAL mailing list

Reply via email to