2013-07-30 4 views
-1

J'ai créé la classe browserView nommée "bdrMenuView". Cela devrait être comme "class bdrMenuView (BrowserView):". et la classe contient la méthode nommée "createPictMenu". Toute la classe devrait êtrecréer une instance d'une classe d'une autre classe

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

Maintenant, je l'ai écrit une autre classe nommée comme LogoViewlet. Cela devrait ressembler à "class LogoViewlet (ViewletBase):". et la classe contient la méthode nommée "update". Toute la classe devrait être

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

Maintenant, je veux appeler la méthode de la classe browserView d'une autre classe. J'ai créé une instance d'une classe comme

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

Je veux savoir si c'est correct ou pas ce que j'ai créé.

+0

J'ai vu sur les listes de diffusion que vous essayez de créer une vue à partir de la fenêtre du logo. C'est une erreur. Pour créer un menu, vous devez utiliser l'un des portlets de menu existants ou créer le vôtre en fonction de ceux-ci. –

+0

Je veux remplacer le logo par défaut de plone à nos menus. Pour cela j'ai utilisé par défaut LogoViewlet. en ce que j'ai appelé ma propre méthode de classe. Donc, il faudra retourner nos menus .... Alors que je dois appeler notre propre méthode de classe par défaut classe LogoViewlet ... –

+0

Oh, vous voulez changer où le point de liaison href? Est-ce ce que vous essayez de dire lorsque vous dites que vous voulez «remplacer le logo dans nos menus»? –

Répondre

0

Non, ce n'est pas correct et cela n'a absolument aucun sens. Pourquoi passez-vous dans la baseclass en tant que paramètre? S'il vous plaît, apprenez le Python de base.

Les paramètres aux vues sont le contexte et la demande. La meilleure façon de faire une vue à l'intérieur d'une autre vue (une vue) est de la traverser. Vous pouvez le faire avec restrictedTraverse.

Le code exact dépend de ce pour quoi votre vue est enregistrée. Par exemple, si la vue que vous voulez rechercher est appelée @@bdrmenu et enregistrée pour n'importe quel contenu, vous le rechercheriez avec self.context.restrictedTraverse('@@bdrmenu').

Questions connexes