archetype.schemaextender и адаптеры Grok

Как можно зарегистрироваться archetypes.schemaextenders с five.grok,

Попытка:

class QuickNavExtender(grok.Adapter):
    """
    Define schema fiddler which injects a new field to every item.
    """

    # This field comes on every AT content item
    grok.adapts(ISchemaExtender)
    grok.provider(ISchemaExtender)
    grok.context(IBaseContent)

    #adapts(IBaseContent)
    implements(ISchemaExtender)    

    fields = [
            ExtensionBooleanField("quicknav",
                widget = atapi.BooleanWidget(
                    label="Quick jump navigation",
                    description="Allow in-page jumping by navigation links"
                ),

                # On which edit tab this field appears
                schemata = "settings"
            )
    ]

... не подбирается.

Но если вы добавите этот фрагмент ZCML и откажетесь от регистрации в стиле Zope 3, это сработает:

<adapter factory=".extender.QuickNavExtender"
   provides="archetypes.schemaextender.interfaces.ISchemaExtender" />

1 ответ

Решение

Я думаю, что вы хотите:

class QuickNavExtender(grok.Adapter):
    grok.context(IBaseContent)
    grok.implements(ISchemaExtender)
    # fields here...
Другие вопросы по тегам