Ссылка Magento на админку - редактировать профиль клиента

В Magento, когда я пытаюсь сгенерировать ссылку из внешнего интерфейса для редактирования клиента, ссылка, которую я создаю, всегда перенаправляет меня обратно на панель инструментов в области администрирования, даже если она выглядит правильно.

Я пробовал это в нескольких версиях Magento (и в сообществе, и в Enterprise) с тем же результатом.

$adminUrl = Mage::helper('adminhtml')->getUrl('adminhtml/customer/edit/index',array('id'=>7));
$adminUrl2 = Mage::helper("adminhtml")->getUrl("adminhtml/customer/edit/id/".'7'."/");           

Это создает URL-адрес, например: /admin/customer/edit/id/7/key/f126e6cd7af2eb8cd068ff80fb512d4a/

Это кажется правильным, но когда я нажимаю на него, я возвращаюсь на панель инструментов в административной области.

Однако следующий код работает и не перенаправляет меня на панель инструментов:

$adminUrl = Mage::helper('adminhtml')->getUrl('adminhtml/catalog_product/edit', array('id' => 157990));  

Если я вручную скопирую URL-адрес за вычетом ключа и заменю ключ ключом, который был сгенерирован при навигации в области администрирования (т. е. путем копирования рабочего ключа с панели навигации в моем браузере), это работает - поэтому я думаю, что это должно быть как-то связано с этим.


person jsims281    schedule 12.02.2015    source источник


Ответы (1)


Когда вы создаете URL-адрес администратора из внешнего интерфейса, Magento использует ключ формы из сеанса внешнего интерфейса. Затем, когда вы щелкаете по этой ссылке, Magento заново создает ключ URL-адреса администратора для сравнения с ключом в ссылке, только на этот раз он использует ключ формы adminhtml. Так как ключи формы не совпадают, хэш-ключ URL-адреса не совпадает, и ваша ссылка не будет работать. Поведение Magento на этом этапе заключается в том, чтобы вернуть вас обратно в панель администратора (или на страницу входа администратора).

Любой контроллер, унаследованный от Mage_Adminhtml_Controller_Action, может разрешить определенным действиям не требовать ключа URL-адреса администратора, добавив их в массив $_publicActions.

Например, добавьте в Mage_Adminhtml_CustomerController

public $_publicActions = array('edit');
person Dmitry Kovalev    schedule 13.02.2015