我添加了 plone.app.referenceablebehavior到 Plone 4.3,创建了一个 TTW 类型并使其可引用:
然后我在站点根目录中创建了一个名为“My Referenceable Type Instance”的类型实例,并在 Debug模式下尝试了以下操作:
>>> from plone.app.referenceablebehavior.referenceable import IReferenceable
>>> IReferenceable.providedBy(app.Plone['my-referenceable-type-instance'])
False
我希望结果为 True。这是一个错误,还是我遗漏了什么?
[0] 我的扩建:
[buildout]
extends = https://raw.github.com/pythonpackages/buildout-plone/master/4.3.x-dev
[plone]
eggs +=
plone.app.referenceablebehavior
最佳答案
在调试 session 中,您需要在尝试之前设置本地站点管理器。尝试:
>>> from zope.component.hooks import setSite
>>> setSite(app.Plone)
...在尝试检查对象是否提供 IReferenceable 之前。这是必要的原因是 Dexterity 使用称为对象规范描述符的东西,它从类型的工厂类型信息动态查找接口(interface),这是特定于站点的(如果没有首先配置本地站点,您无法检索特定于站点的配置用于查找)。
关于Plone Dexterity Behaviors 可引用的行为不可引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17425668/