2

在 Plone 中,在视图类实例中添加成员变量会自动使其成为视图获取链的一部分。问题在这里详细描述:

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

处理此问题的建议方法是什么

  • 我们可以在没有隐式获取的情况下拥有基于 Plone 主模板的视图吗

  • 那么viewlet 和portlet 渲染器呢?

  • 如果不是......应该如何处理这个问题,以便 self.xxx 变量不会获得额外的采集包装?

4

1 回答 1

4

用于Acquisition.aq_inner()剥离额外的包装并将对象恢复到其原始路径。请不要使用您链接到的文档中描述的单项列表方法。

显示链接文档中的一个示例,但使用以下内容进行了更正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.Explicitor的对象Acquisition.Implicitaq_inner()如果它不是 Acquisition 包装的对象,则该函数将逐字返回传递的参数。

于 2012-08-01T08:24:37.520 回答