隐藏@@个人信息视图上的自定义字段
问题描述:
我正在关注collective.examples.userdata以在注册表单上添加一些自定义字段。隐藏@@个人信息视图上的自定义字段
一个字段是“接受条款”,其中ceuserdata也有文件,并且如package description(或至少我明白那样)所述,特殊的“接受条款”字段应该仅显示在注册表格,但不在@@个人信息视图上。
我也尝试在我的构建中添加c.e.userdata,并在一个新的Plone站点上显示,并且它也显示在@@个人信息中,所以我想知道这是我误解还是存在一个错误。
任何人都知道如何在@@注册表单中显示一个字段,但将其隐藏在@@个人信息中?
答
从@@personal-information
表格中隐藏字段并仅在@@register
表单中显示该字段不支持开箱即用,只能以其他方式进行。
您必须自定义一个或另一个表单来完成此操作;自定义plone.app.users.browser.personalpreferences.UserDataPanel以删除您的字段或提供新版本的plone.app.users.browser.register.RegistrationForm以将您的字段添加到那里。
以下是我会做:
plone.app.users.browser.personalpreferences import UserDataPanel
class CustomizedUserDataPanel(UserDataPanel):
def __init__(self, context, request):
super(CustomizedUserDataPanel, self).__init__(context, request)
self.form_fields = self.form_fields.omit('acceptTerms')
注意.omit('acceptTerms')
,我在你的额外字段的名称猜测。然后,您可以使用ZCML将您的自定义面板注册到您的主题浏览器图层,或直接在您的Plone站点或自定义界面上注册。在这里,我采取简单的出路,并将其注册为Plone站点对象:
<browser:page
for="Products.CMFPlone.Portal.PloneSite"
name="personal-information"
class=".mymodule.CustomizedUserDataPanel"
permission="cmf.SetOwnProperties"
/>
这应该既Plone的4.0和4.1工作,因为这个特殊的班级并没有改变。
非常感谢,它非常完美!也许更新collective.examples.userdata也是有道理的,因为这些文档是这么说的。 – gforcada 2011-06-01 13:36:35