Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
灵巧plone 4.2中自定义EditForm的getMultiadapter错误_Plone_Dexterity - Fatal编程技术网

灵巧plone 4.2中自定义EditForm的getMultiadapter错误

灵巧plone 4.2中自定义EditForm的getMultiadapter错误,plone,dexterity,Plone,Dexterity,我正在尝试打开一个自定义editform,它将只显示包含12个字段的表单中的一个字段: class EditForm(dexterity.EditForm): grok.name('editCustom') grok.context(IInfo) def updateWidgets(self): super(EditForm, self).updateWidgets() self.widgets['alps'].mode = 'hidde

我正在尝试打开一个自定义editform,它将只显示包含12个字段的表单中的一个字段:

class EditForm(dexterity.EditForm):
    grok.name('editCustom')
    grok.context(IInfo)

    def updateWidgets(self):
        super(EditForm, self).updateWidgets()
        self.widgets['alps'].mode = 'hidden'
        self.widgets['operationStatus'].mode = 'hidden'

# etc.
在我找到一个多字段列表选项字段之前,一切正常:

        self.widgets['siteContact'].mode = 'hidden'
(这是form.Schema中的条目):

但当我尝试访问自定义EditForm时,我得到:

  Module z3c.form.widget, line 140, in render
  Module zope.component._api, line 109, in getMultiAdapter
ComponentLookupError: ((<Container at /test/first>, <HTTPRequest, URL=http://localhost:8080/test/first/@@editCustom>, <Products.Five.metaclass.EditForm object at 0x08F9D9F0>, <zope.schema._field.List object at 0x084844B0>, <OrderedSelectWidget 'form.widgets.siteContact'>), <InterfaceClass zope.pagetemplate.interfaces.IPageTemplate>, 'hidden')
模块z3c.form.widget,第140行,在渲染中
模块zope.component.\u api,第109行,在getMultiAdapter中
ComponentLookupError:((,,,,“隐藏”)

看起来您可能没有正确指定词汇表。请换

schema.Choice(vocabulary=("test.siteContact"))


我遇到了完全相同的问题,现在不知道是否有修复或解决方法,但如果顺序不重要,您可以尝试
schema.Set
(或
schema.FrozenSet
)而不是
schema.List
。这些都允许您选择多个选项。我已经测试了
设置
选项,它们都使用
模式
作为
隐藏

(1) 设置/冻结设置

field = zope.schema.Set(
   value_type=zope.schema.Choice(values=(1, 2, 3, 4)),
   default=set([1, 3]) )
widget = setupWidget(field)
widget.update()

widget.__class__
<class 'z3c.form.browser.select.SelectWidget'>
field=zope.schema.Set(
value_type=zope.schema.Choice(值=(1,2,3,4)),
默认值=设置([1,3]))
小部件=设置小部件(字段)
widget.update()
小部件__
选择小部件:允许您从一组给定选项中选择一个或多个值

(2) 名单

field=zope.schema.List(
value_type=zope.schema.Choice(值=(1,2,3,4)),
默认值=[1,3])
小部件=设置小部件(字段)
widget.update()
小部件__

有序选择:允许您从一组给定选项中选择一个或多个值,并对这些选项进行排序。

奇怪的是,字段类型似乎不允许将其隐藏。奇怪的是,我没有取得任何进展:(所以仍然没有进展,这似乎只是一个bug,我想我会想办法报告它,如果我得到一个补丁,我会让你们都知道:)您好@vangheem,这一更改没有任何影响。当我调用自定义编辑表单时,仍然会遇到相同的错误。感谢您的建议,Nick。我还没有找到解决方案,并跳转到我程序的另一部分(因为这是一件小事)。现在我看看这些是否适合该程序!谢谢!
schema.Choice(vocabulary="test.siteContact")
field = zope.schema.Set(
   value_type=zope.schema.Choice(values=(1, 2, 3, 4)),
   default=set([1, 3]) )
widget = setupWidget(field)
widget.update()

widget.__class__
<class 'z3c.form.browser.select.SelectWidget'>
field = zope.schema.List(
value_type=zope.schema.Choice(values=(1, 2, 3, 4)),
    default=[1, 3] )
widget = setupWidget(field)
widget.update()

widget.__class__
<class 'z3c.form.browser.orderedselect.OrderedSelectWidget'>