У меня есть модуль «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>