我的PHPTAL语法有什么问题?

时间:2011-05-12 09:21:19

标签: template-tal 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>

但我希望能够使用更短的内容:

<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>

即。无需定义owneruser以获取php:测试。

所以我的问题是,我如何在php:上下文中使用点语法错误? (另外,有没有更简单的方法在模板中表达这一点,即没有将PHP外部转换为模板?

1 个答案:

答案 0 :(得分:1)

只要recorduser是对象(类的实例),此语法就可以了。如果它们是数组,那么您需要:

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

当您使用TALES表达式时,PHPTAL会为您找出对象/数组的差异。如果使用php:,则必须注意对象和数组之间的差异。