5

我正在尝试为 Plone 网站构建一个表单包。我目前正在使用 Plone 4.3。在我将 Dexterity 与 Five.grok 和 grok 库一起使用之前。但是在阅读了本文的 Plone 4.3 迁移和五.grok 依赖部分后:http: //developer.plone.org/components/grok.html似乎 Plone 开发人员正在远离一起使用 grok。

那么我应该放弃使用 Grok 吗?当所有当前文档都在使用 Grok 时,我将如何去做呢?此外,我正在从基于 Windows 的机器上进行开发。

4

1 回答 1

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
  • 现在 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 是一个选项,所以我从未使用过它。

于 2013-10-03T12:42:35.893 回答