如何覆盖Plone控制面板中的小部件
LinguaPlone使用MultiSelect小部件选择多种语言。像InOut小部件甚至是MultiCheckBox小部件这样的东西将是更好的用户界面,因为很难从一个长列表中看到所有选定的语言 我尝试使用以下命令覆盖表单字段:如何覆盖Plone控制面板中的小部件,plone,zope,linguaplone,Plone,Zope,Linguaplone,LinguaPlone使用MultiSelect小部件选择多种语言。像InOut小部件甚至是MultiCheckBox小部件这样的东西将是更好的用户界面,因为很难从一个长列表中看到所有选定的语言 我尝试使用以下命令覆盖表单字段: form_fields['available_languages'].custom_widget = MultiCheckBoxWidget 正如zope.formlib文档中所建议的,但我得到如下回溯: Traceback (innermost last): M
form_fields['available_languages'].custom_widget = MultiCheckBoxWidget
正如zope.formlib文档中所建议的,但我得到如下回溯:
Traceback (innermost last):
Module ZPublisher.Publish, line 128, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 48, in call_object
Module zope.formlib.form, line 795, in __call__
Module five.formlib.formbase, line 50, in update
Module zope.formlib.form, line 758, in update
Module plone.fieldsets.form, line 30, in setUpWidgets
Module zope.formlib.form, line 402, in setUpEditWidgets
Module zope.formlib.form, line 334, in _createWidget
TypeError: __init__() takes exactly 4 arguments (3 given)
如何覆盖默认小部件?您需要的是:
from zope.formlib.widgets import OrderedMultiSelectWidget
from Products.LinguaPlone.browser.controlpanel import LanguageControlPanel
def MyMultiCheckBoxWidget(field, request):
return OrderedMultiSelectWidget(field, field.value_type.vocabulary, request)
LanguageControlPanel.form_fields["available_languages"].custom_widget = MyMultiCheckBoxWidget