我正在使用 z3c.form 在 Plone 4.1.4 中创建一个表单。我需要一个必需的布尔字段:用户必须勾选该框。(在我的情况下,用户必须同意条款和条件。)
使用required=True
字段不起作用:我可以在不选中复选框的情况下提交表单。
这就是我的代码的样子:
from five import grok
from plone.directives import form
from zope import schema
from z3c.form import button
from Products.CMFCore.interfaces import ISiteRoot
from Products.statusmessages.interfaces import IStatusMessage
class ITestSchema(form.Schema):
hasApprovedConditions = schema.Bool(
title=u'I agree to the Terms and Conditions.',
required=True,
)
class TestForm(form.SchemaForm):
grok.name('test-form')
grok.require('zope2.View')
grok.context(ISiteRoot)
schema = ITestSchema
ignoreContext = True
@button.buttonAndHandler(u'Send')
def handleApply(self, action):
data, errors = self.extractData()
if errors:
self.status = self.formErrorsMessage
return
IStatusMessage(self.request).addStatusMessage(u'Thanks', 'info')
self.request.response.redirect(self.context.absolute_url())
表单显示复选框和标签,但没有迹象表明该字段是必需的,实际上不是:我可以在不勾选复选框的情况下提交表单。
我正在扩展这些已知的好集合:
- http://dist.plone.org/release/4.1.4/versions.cfg
- http://good-py.appspot.com/release/dexterity/1.2?plone=4.1.4
他们将 z3c.form 固定到 2.5.1 版,但我也尝试了 2.6.1 版。
我错过了什么?