加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Plone 4.3 – 如何在没有Grok的情况下使用Zc3.form构建Form包?

发布时间:2020-12-16 05:05:15 所属栏目:百科 来源:网络整理
导读:我正在尝试为Plone网站构建一个表单包.我目前正在使用Plone 4.3.在我使用Dexterity和five.grok和grok库之前.但在阅读了本文的Plone 4.3迁移和five.grok依赖部分之后: http://developer.plone.org/components/grok.html看起来Plone开发人员正在逐渐停止使用g
我正在尝试为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的机器开发.

解决方法

首先创建没有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是一个选项,所以我从来没有使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读