2011-05-12 3 views
0

.Quick question - je la suivante, la syntaxe de travail:Quel est le problème avec ma syntaxe PHPTAL?

<td tal:define="owner record/owner_id; user user/id; mode php:(owner eq user)?'_edit':'_view'; linkname php:(owner eq user)?'Edit':'View';"> 
    <a href="index.php?-table=${table}&amp;-action=${mode}&amp;id=${record/id}">${linkname}</a> 
</td> 

mais je comptais pouvoir utiliser la plus courte:

<td tal:define="mode php:(record.owner_id eq user.id)?'_edit':'_view';linkname php:(record.owner_id eq user.id)?'Edit':'View';"> 
    <a href="index.php?-table=${table}&amp;-action=${mode}&amp;id=${record/id}">${linkname}</a> 
</td> 

-à-dire ne pas avoir à définir owner et user pour pour obtenir à eux pour le test php:. Donc, ma question est, comment est-ce que j'utilise la syntaxe point erronée dans le contexte php:? (aussi, existe-t-il une manière plus simple d'exprimer ceci DANS LE TEMPLATE sans changer le PHP externe au modèle?

Répondre

1

Cette syntaxe est fine tant que record et user sont des objets (instances de classes). , alors vous avez besoin:

tal:define="mode php:(record['owner_id'] eq user['id']) 

Lorsque vous utilisez des expressions TALES, PHPTAL chiffres sur la différence objet/tableau pour vous Si vous utilisez php:, vous devez surveiller les différences entre les objets et les tableaux

..
Questions connexes