2011-05-30 60 views
4

我正在关注collective.examples.userdata以在注册表单上添加一些自定义字段。隐藏@@个人信息视图上的自定义字段

一个字段是“接受条款”,其中ceuserdata也有文件,并且如package description(或至少我明白那样)所述,特殊的“接受条款”字段应该仅显示在注册表格,但不在@@个人信息视图上。

我也尝试在我的构建中添加c.e.userdata,并在一个新的Plone站点上显示,并且它也显示在@@个人信息中,所以我想知道这是我误解还是存在一个错误。

任何人都知道如何在@@注册表单中显示一个字段,但将其隐藏在@@个人信息中?

回答

7

@@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工作,因为这个特殊的班级并没有改变。

+0

非常感谢,它非常完美!也许更新collective.examples.userdata也是有道理的,因为这些文档是这么说的。 – gforcada 2011-06-01 13:36:35

相关问题