跳转到主要内容

z3cform的megrok扩展

项目描述

《megrok.z3cform.base》是在《z3c.form》之上的一个不是很厚的层。它提供了一种使用《Grok》方式来注册您的表单和部件。此外,该包包含了一系列基本表单,可以直接与grokcore.layout(或旧版的《megrok.layout》)一起使用。

通过使用《megrok.pagetemplate》,表单的自定义也得到了简化,允许您轻松覆盖模板。

表单注册

模型

我们设置了一些模型作为表单上下文

>>> import grokcore.component as grok
>>> from zope import interface, schema

>>> class IMammoth(interface.Interface):
...    name = schema.TextLine(title=u"Name")
...    age = schema.Int(title=u"Age")

>>> class Mammoth(grok.Context):
...    grok.implements(IMammoth)
...    name = schema.fieldproperty.FieldProperty(IMammoth['name'])
...    age = schema.fieldproperty.FieldProperty(IMammoth['age'])

我们声明了表单。它与 grok.View 非常相似

>>> import megrok.z3cform.base as z3cform

>>> class TestForm(z3cform.Form):
...    grok.context(Mammoth)

感知和查询

我们让 Grok 注册组件

>>> grok.testing.grok_component('form', TestForm)
True

现在,我们可以正常查询它

>>> from zope.publisher.browser import TestRequest
>>> request = TestRequest()
>>> manfred = Mammoth()

>>> from zope.component import getMultiAdapter
>>> myform = getMultiAdapter((manfred, request), name="testform")

>>> myform
<TestForm object at ...>
>>> print myform()
<form action="http://127.0.0.1" method="post"
        enctype="multipart/form-data" class="form-testform">
...

布局集成

《megrok.z3cform.base》与《grokcore.layout》无缝集成,提供基础类以简化项目中的布局集成。

让我们快速浏览一下。我们创建一个布局

>>> import grokcore.layout

>>> class MyLayout(grokcore.layout.Layout):
...     grok.context(IMammoth)
...     def render(self):
...        return 'The layout content is: %s' % self.view.content()

我们声明一个页面表单。页面表单是在布局中显示的表单

>>> class PageForm(z3cform.PageForm):
...    grok.context(Mammoth)

我们使用 Grok 注册组件

>>> grok.testing.grok_component('page', PageForm)
True
>>> grok.testing.grok_component('layout', MyLayout)
True

现在,在渲染表单时,我们将其嵌入到布局中

>>> pageform = getMultiAdapter((manfred, request), name="pageform")
>>> print pageform()
The layout content is: <form action="http://127.0.0.1" method="post"
      enctype="multipart/form-data" class="form-pageform">
...

变更日志

0.5 (2012-07-21)

  • 添加了对新的 grokcore.layout 的支持。不再直接依赖于 megrok.layout。[danilobotelho]

0.4 (2012-06-22)

  • 添加了验证器、不变量和默认值装饰器。这些装饰器的灵感来自 plone.directives.form。

  • 添加了对组(z3c.form.group)的支持。[danilobotelho]

  • 修复了 WidgetTemplateGrokker。[danilobotelho]

  • 在 __init__.py 中添加了 HIDDEN_MODE。[danilobotelho]

0.3 (2010-02-11)

  • 修复了小部件模板解析器中依赖操作系统的路径处理。

0.2 (2009-11-18)

  • 修复了一个错误,该错误在编辑期间触发了 ObjectModifiedEvent 两次。[trollfot]

  • 升级以兼容 grok 1.1。[trollfot]

0.1 (2009-10-20)

  • 初始发布

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

megrok.z3cform.base-0.5.tar.gz (19.5 kB 查看哈希值)

上传时间

由以下组织支持