我正在尝试为Plone网站构建一个表单包。我目前正在使用Plone 4.3。在我使用Dexterity和five.grok和grok库之前。但是在阅读了本文的Plone 4.3迁移和five.grok依赖部分之后:http://developer.plone.org/components/grok.html看来Plone开发人员正在逐渐停止使用grok。
因此,我应该放弃使用Grok,当目前所有文档都使用Grok时,我将如何这样做呢?另外,我是从基于Windows的机器开发的。
答案 0 :(得分:3)
首先创建没有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
<adapter factory=".my.AddFormAdapter"/>
<browser:page
for="*"
name="my.addbutton"
class=".my.AddButton"
template="addbutton.pt"
permission="zope2.View"
/>
你应该离开grok:
这取决于你在做什么。对于插件,我说是,但对于一个项目,这取决于你。
Grok不是已经很大的Zope的一部分。因此,只有在需要时才能添加依赖项。 Grok是一个选项,所以我从来没有使用它。