forms - 如何修改updateWidgets中的z3c表单字段?

标签 forms plone zope z3c.form

我正在尝试根据包含在 HTTP get 变量中的变量动态更新表单字段。特别是 www.site.com/form?id=name。我想从 url 中提取“id”字段并自动填充表单的 memberID 字段。

我可以使用 self.request.get('id') 访问 get 变量。但是我一直无法弄清楚如何更新表单字段。我检查了小部件文档 http://packages.python.org/z3c.form/widget.html但没有一个建议奏效。

class IUpdateEmailFormSchema(interface.Interface):
    # -*- extra stuff goes here -*-
    """
    """
    memberID = schema.TextLine(title=(u'Member id'))

    email = schema.TextLine(title=(u'Email'), description=(u'The email'))

class updateEmailForm(form.Form):
    fields = field.Fields(IUpdateEmailFormSchema)
    label = _(u'Change Email')
    ignoreContext = True


    @button.buttonAndHandler(u'Update')
    def handleUpdate(self,action):
        data, errors = self.extractData()

        if data.has_key('email'):

            portal_membership = getToolByName(self.context, 'portal_membership')
            member = portal_membership.getMemberById(data['memberID'])

    def updateWidgets(self):
        print "This is update widget \n\n"
        import pdb; pdb.set_trace()
        print self.request.form['id']    #Does not work as specified in http://packages.python.org/z3c.form/widget.html
        #self.widgets["memberID"].value = self.request.get('id').encode('utf-8')
        form.Form.updateWidgets(self)

updateEmailFormView = wrap_form(updateEmailForm)

*更新:updateWidget 没有正确缩进。

最佳答案

updateWidgets 方法是正确的地方。
只是你应该先调用“form.Form.updateWidgets”然后做你的
更改(甚至更好的用户 super() 如下所示):

def updateWidgets(self):
    super(updateEmailForm, self).updateWidgets()
    id = self.request.get('id', None)
    if id:
        self.widgets["memberID"].value = id.encode('utf-8')

所以基本上错误是订单

如果没有请求(这有点奇怪,你可能正在那里做一些旧的事情)那么你可以得到它 via :
from zope.globalrequest import getRequest
request = getRequest()

关于forms - 如何修改updateWidgets中的z3c表单字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483226/

相关文章:

twitter-bootstrap - 跳过某些 Bootstrap 4 输入的验证反馈

javascript - 将上传的文件从一个 "file"类型输入重新分配给另一个输入

python - 使用条件规则执行随机 python 脚本 Zope/Plone

session - 如何导出Plone session 配置?

timezone - Plone MailHost 发送带有澳大利亚时区的错误日期 header

PHP/HTML 表单提交

php - 将 HTML 表单提交为 PDF

plone - 如何在 Plone 4 中创建粘性新闻项目

python - buildout 找不到 Plone 的 pip 包

image - 在比例尺上强制执行特定宽度?