Magento Layout.xml <remove ... =“”>标签没有预期效果</remove>

时间:2010-06-11 20:32:54

标签: layout magento

我有一个“auth-redirect”模块,它位于我所有页面布局文件的开头(1列,2列等)。这有助于确保在呈现任何页面之前,如果用户未经过正确的身份验证,则会重定向到登录页面。

我允许登录页面呈现的方式是在我的customer.xml文件中,我声明了以下内容:

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

这非常有效。

但是我最近创建了另一个模块自定义模块,当我转到使用该模块的控制器并呈现模块布局的URL时,auth-redirect保留在页面中,因此我总是被重定向。

自定义模块布局如下所示:

<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>

现在,我已经转到页面并使用Alan Storm的showLayout模块从?showLayout = page获取输出。您可以看到auth-redirect的元素位于页面中,位于正文下方,但顶部的auth-redirect仍在页面中。我错过了什么?

<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>

1 个答案:

答案 0 :(得分:3)

你的最后一段代码是否在同一个文件中?如果是这样,为什么不尝试评论/删除第一个

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

如果没有,如果要删除的“auth-redirect”块嵌套在“formkey”块中,则下面的代码可能会有效。

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