次のように作成されたフォームモデルがあります。
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"
登録は正しく行われます。
z3c.form
ただし、IFormSchemaが処理チェーンの任意のポイントのオブジェクトによって直接提供されているかどうかわからないという問題があるため、次のように呼び出すことができます。
provider = ITreeSelectURLProvider(someObject)
IFormSchemaは、z3c.formまたはplone.autoformチェーンの任意のポイントのオブジェクト(zope.interface.directlyProvides?)に直接適用されますか?
そうでない場合、モデルに対してアダプターを登録できるようにするための推奨される方法は何ですか?このインターフェイスを実装するには、どのクラスを作成する必要がありますか?
さらに悪いことに、質問のコンテキストは実際のコンテンツアイテムではなく、サブフォームオブジェクトです。