2011-05-30 78 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

相關問題