0

.快速问题-我有以下有效的语法:

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

4

1 回答 1

1

只要是对象(类的实例),record这种语法就很好。user如果它们是数组,那么您需要:

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

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

于 2011-05-12T20:18:27.043 回答