gpt4 book ai didi

forms - 如何在 z3c.form 中设置 bool 字段为必填项?

转载 作者:行者123 更新时间:2023-12-03 01:37:05 25 4
gpt4 key购买 nike

我正在使用 z3c.form 在 Plone 4.1.4 中创建表单。我需要一个必需的 bool 字段:用户必须勾选该框。 (就我而言,用户必须同意条款和条件。)

对字段使用 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())

表单显示了复选框和标签,但没有任何迹象表明该字段是必填字段,事实上它不是:我可以在不勾选复选框的情况下提交表单。

我正在扩展这些已知的好集合:

他们将 z3c.form 固定到版本 2.5.1,但我也尝试了版本 2.6.1。

我错过了什么?

最佳答案

您应该使用这样的约束:

def validateAccept(value):
if not value == True:
return False
return True

class ITestSchema(form.Schema):
hasApprovedConditions = schema.Bool(
title=u'I agree to the Terms and Conditions.',
required=True,
constraint=validateAccept,
)

更多信息:

关于forms - 如何在 z3c.form 中设置 bool 字段为必填项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com