。快速问题 - 我有以下工作语法:
<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}&-action=${mode}&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}&-action=${mode}&id=${record/id}">${linkname}</a>
</td>
即。无需定义owner
和user
以获取php:
测试。
所以我的问题是,我如何在php:
上下文中使用点语法错误? (另外,有没有更简单的方法在模板中表达这一点,即没有将PHP外部转换为模板?
答案 0 :(得分:1)
只要record
和user
是对象(类的实例),此语法就可以了。如果它们是数组,那么您需要:
tal:define="mode php:(record['owner_id'] eq user['id'])
当您使用TALES表达式时,PHPTAL会为您找出对象/数组的差异。如果使用php:
,则必须注意对象和数组之间的差异。