2010-06-11 4 views
4

J'ai un module "auth-redirect" qui est au début de tous mes fichiers de mise en page (1column, 2column, etc.). Cela fonctionne pour s'assurer qu'avant de rendre n'importe quelle page, si l'utilisateur n'est pas authentifié correctement, il redirige vers une page de connexion.Magento Layout.xml <remove ...> tag n'ayant pas l'effet désiré

La façon dont je permets la page de connexion est de rendre dans mon fichier customer.xml Je déclare ce qui suit:

<customer_account_login>           
    <remove name="auth-redirect"/> 
    ... 
</customer_account_login> 

Cela fonctionne fabuleusement.

Cependant, j'ai récemment créé un autre module module personnalisé et quand je vais aux URLs qui engagent le contrôleur de ce module et rendent la disposition des modules l'auth-redirect reste dans la page et donc toujours redirigé.

La mise en page du module personnalisé ressemble à ceci:

<shipment_management_index>                                                          
    <remove name="auth-redirect"/>                                                           
    <reference name="content">                                                            
     <block type="custom/vendor_shipment_info" template="custom/vendor/shipment/info.phtml" name="info"/>                                      
    </reference>                                                               
</shipment_management_index> 

Maintenant, je suis allé à la page et en utilisant le module showLayout d'Alan tempête obtenu la sortie de la page showLayout =?. Vous pouvez voir que l'élément pour auth-redirect est dans la page, en dessous du corps, mais en haut, auth-redirect est toujours dans la page. Qu'est-ce que je rate?

<layout><block name="formkey" type="core/template" template="core/formkey.phtml"/> 
<block type="page/html" name="root" output="toHtml" template="page/1column.phtml"> 
<block type="page/html" name="auth-redirect" as="auth-redirect" template="page/html/auth-redirect.phtml" ignore="1"/> 
<block type="page/html_head" name="head" as="head"> 
... 
</block> 
... 
<remove name="auth-redirect"/> 
<reference name="content"> 
    <block type="custom/vendor_shipment_info" template="custom/vendor/shipment/info.phtml" name="info"/> 
</reference> 
</reference></layout> 

Répondre

3

Votre dernière pièce de code est-elle dans le même fichier? Si oui, pourquoi ne pas essayer de commenter/supprimer la première

<block type="page/html" name="auth-redirect" as="auth-redirect" template="page/html/auth-redirect.phtml" ignore="1"/> 

Sinon, peut-être le code ci-dessous fonctionnera si le bloc « auth-redirect » que vous voulez supprimer est imbriqué dans le bloc « formkey ».

<reference name="formkey"> 
    <action method="unsetChild"><name>auth-redirect</name></action> 
    </reference>