根据plone.directives.form.Schema查询适配器

时间:2012-09-21 11:26:30

标签: plone z3c.form zope.interface

我创建了一个表单模型如下:

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?)

  • 如果没有,建议的做法是什么,以便我可以针对模型注册适配器?我应该用什么类来实现这个接口?

更糟糕的是,问题中的上下文不是真正的内容项,而是子表单对象。

1 个答案:

答案 0 :(得分:2)

Dexterity确保模式接口(在文件系统上定义并在FTI中引用,或通过Web或在XML文件中定义)由内容类型的实例提供。

这不是关于形式,而是关于敏捷。 form.Schema基类只是一个扩展接口的标记,它允许plone.autoform的一些处理在配置时进行。