我创建了一个表单模型如下:
from plone.app.directives import Form
class IFormSchema(form.Schema):
foobar = schema.Bool(title=u"Just another field")
我想根据这个定义注册适配器:
@component.adapter(IFormSchema)
@interface.implementer(ITreeSelectURLProvider)
def TreeSourceURL():
"""
"""
return "http://foobar"
注册正确。
但是,我不知道IFormSchema是否由z3c.form
处理链的任何点直接提供,以便我可以调用:
provider = ITreeSelectURLProvider(someObject)
IFormSchema是否直接应用于z3c.form或plone.autoform链中的某个对象(zope.interface.directlyProvides?)
如果没有,建议的做法是什么,以便我可以针对模型注册适配器?我应该用什么类来实现这个接口?
更糟糕的是,问题中的上下文不是真正的内容项,而是子表单对象。
答案 0 :(得分:2)
Dexterity确保模式接口(在文件系统上定义并在FTI中引用,或通过Web或在XML文件中定义)由内容类型的实例提供。
这不是关于形式,而是关于敏捷。 form.Schema基类只是一个扩展接口的标记,它允许plone.autoform的一些处理在配置时进行。