首先创建没有 grok 的表单并不难,并且不依赖于您的操作系统。
创建表单总是一样的。这是我如何进行的:
from Products.Five.browser import BrowserView
from plone.autoform.form import AutoExtensibleForm
from plone.app.z3cform import layout
from zope import interface
from zope import schema
from zope import component
from z3c.form import form
from collective.my.i18n import _
class AddFormSchema(interface.Interface):
what = schema.Choice(
title=_(u"What"),
vocabulary="plone.app.vocabularies.UserFriendlyTypes"
)
where = schema.Choice(
title=u"Where",
vocabulary="collective.my.vocabulary.groups"
)
class AddFormAdapter(object):
interface.implements(AddFormSchema)
component.adapts(interface.Interface)
def __init__(self, context):
self.what = None
self.where = None
class AddForm(AutoExtensibleForm, form.Form):
schema = AddFormSchema
form_name = 'add_content'
class AddButton(layout.FormWrapper):
"""Add button"""
form = AddForm
- 现在 ZCML 时间,这是您在使用 grok 时不需要的步骤:
<adapter factory=".my.AddFormAdapter"/>
<browser:page
for="*"
name="my.addbutton"
class=".my.AddButton"
template="addbutton.pt"
permission="zope2.View"
/>
如果你从 grok 搬家:
这取决于你在做什么。对于插件,我说是,但对于一个项目,这取决于你。
Grok 不是已经很大的 Zope 的一部分。因此,添加依赖项总是只有在需要时才应该做的事情。Grok 是一个选项,所以我从未使用过它。