0

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

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

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

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

4

1 回答 1

2

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

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

于 2012-09-21T11:49:50.573 回答