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>

つまり、テストのためにそれらを取得するためにownerandを定義する必要はありません。userphp:

だから私の質問は、php:コンテキストで間違ったドット構文をどのように使用していますか? (また、テンプレートの外部で PHP を変更せずに、テンプレート内でこれを表現する簡単な方法はありますか?

4

1 に答える 1

1

recordこの構文は、 anduserがオブジェクト (クラスのインスタンス) である限り問題ありません。それらが配列の場合は、次が必要です。

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

TALES 式を使用すると、PHPTAL がオブジェクトと配列の違いを判断します。を使用する場合はphp:、オブジェクトと配列の違いに注意する必要があります。

于 2011-05-12T20:18:27.043 に答える