根据用户属性隐藏灵巧字段

时间:2014-01-03 15:32:17

标签: plone dexterity

在添加dexterity对象时,我有两个字段,我们希望根据用户属性只显示一个字段,该字段保存在成员数据中。

架构定义有点像:

class IMyApplication(form.schema):
      fieldA = schema.textline(...)
      fieldB = schema.textline(...)

我想根据用户属性向用户显示这两个字段中的一个字段。

非常感谢指南/链接/建议。

1 个答案:

答案 0 :(得分:2)

首先,请考虑DX-docu

中自定义添加/修改表单的示例

然后,您可以在表单的updateWidgets方法中隐藏字段。

示例代码(未经测试):

from plone.dexterity.browser.add import DefaultAddForm
from z3c.form import interfaces


class AddForm(DefaultAddForm):

    def updateWidgets(self):
        super(AddForm, self).updateWidgets()

        if my_condition:
            self.widgets['myfield'].mode = interfaces.HIDDEN_MODE

由于您必须在addedit表单中执行相同的操作,因此您可以使用自定义创建mixin类。