2

Ploneでは、ビュークラスインスタンスにメンバー変数を追加すると、自動的にビュー取得チェーンの一部になります。この問題は、ここで詳しく説明されています。

http://collective-docs.readthedocs.org/en/latest/views/browserviews.html#views-and-automatic-member-variable-acquisition-wrapping

この問題に対処するための推奨されるアプローチは何ですか

  • 暗黙の取得なしでPloneのメインテンプレートベースのビューを持つことはできますか

  • では、ビューレットとポートレット レンダラーはどうでしょうか。

  • そうでない場合... self.xxx 変数が余分な取得ラッピングを取得しないように、どのように問題に対処する必要がありますか?

4

1 に答える 1

4

Acquisition.aq_inner()余分なラッピングを取り除き、オブジェクトを元のパスに復元するために使用します。リンク先のドキュメントで説明されている単一アイテムリストアプローチは使用しないでください。

リンクされたドキュメントから1つの例を示しますが、次のように修正しaq_inner()ます。

from Acquisition import aq_inner

self.obj = self.context.reference_catalog.lookupObject(value)
return aq_inner(self.obj).absolute_url() # Acquistion chain corrected

aq_innerまたは、次の属性を使用することもできます。

self.obj = self.context.reference_catalog.lookupObject(value)
return self.obj.aq_inner.absolute_url() # Acquistion chain corrected

Acquisition.Explicitただし、これはまたはから継承するオブジェクトでのみ機能しますAcquisition.Implicit。関数は、aq_inner()Acquisitionでラップされたオブジェクトでない場合、渡された引数を逐語的に返します。

于 2012-08-01T08:24:37.520 に答える