2013-07-30 110 views
-1

我創建了名爲「bdrMenuView」的browserView類。它應該像「class bdrMenuView(BrowserView):」一樣。該類包含名爲「createPictMenu」的方法。整個班級應該是從另一個類創建一個類的實例

class bdrMenuView(BrowserView): 
       def createPictMenu(self): 

現在我已經寫了一個名爲LogoViewlet的類。它應該像「class LogoViewlet(ViewletBase):」一樣。並且該類包含名爲「update」的方法。整個班級應該是

class LogoViewlet(ViewletBase): 
       def update(self): 

現在我想調用另一個類的browserView類的方法。我創建了一個類的實例,如

class LogoViewlet(ViewletBase): 
       def update(self): 
        a = bdrMenuView(self,BrowserView)  ---------> instance of BrowserView class 
        logoName = a.createPictMenu() 

我想知道它是正確的還是不是我創建的。

+0

我在郵件列表上看到您正試圖從徽標視圖中創建視圖。這是一個錯誤。要製作菜單,您應該使用現有菜單portlet之一,或根據它們製作您自己的菜單。 –

+0

我想將默認的Plone徽標替換爲我們的菜單。爲此,我使用了默認的LogoViewlet。因爲我稱自己的班級方法。所以它將返回我們的菜單....所以,只有我必須調用我們自己的類方法從默認的LogoViewlet類... –

+0

哦,你想改變href鏈接點的位置?當你說你想「將徽標替換爲我們的菜單」時,你是在說些什麼? –

回答

0

不,這是不正確的,絕對沒有意義。爲什麼你傳入基類作爲參數?請學習基本的Python。

視圖參數是上下文和請求。從另一個視圖(Viewlet所在的視圖)中查看視圖的最佳方法是遍歷它。你可以用restrictedTraverse來做到這一點。

準確的代碼取決於您的視圖註冊的內容。例如,如果您要查看的視圖被稱爲@@bdrmenu並註冊了任何內容,則可以使用self.context.restrictedTraverse('@@bdrmenu')查找該視圖。

相關問題