Тег Magento Layout.xml <remove ...> не имеет желаемого эффекта - PullRequest
4 голосов
/ 12 июня 2010

У меня есть модуль «auth-redirect», который находится в начале всех моих файлов макета страницы (1column, 2column и т. Д.). Это работает, чтобы убедиться, что перед отображением любой страницы, если пользователь не аутентифицирован должным образом, он перенаправляет на страницу входа.

Способ отображения страницы входа в моем файле customer.xml. Я заявляю следующее:

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

Сказочно работает.

Однако недавно я создал еще один пользовательский модуль другого модуля, и когда я перехожу к URL-адресам, которые задействуют контроллер этого модуля и отображают макет модулей, перенаправление аутентификации остается на странице, и, таким образом, я всегда перенаправляемся.

Пользовательский макет модуля выглядит следующим образом:

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

Теперь я перешел на страницу и с помощью модуля showLayout Алана Шторма получил вывод с? ShowLayout = page. Вы можете видеть, что элемент для перенаправления авторизации находится на странице внизу тела, но вверху перенаправление авторизации все еще находится на странице. Чего мне не хватает?

<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 Ответ

3 голосов
/ 19 июня 2010

Ваш последний фрагмент кода находится в том же файле? Если так, то почему бы не попробовать комментировать / удалить первый

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