Magento链接到管理区域 - 编辑客户资料

时间:2015-02-12 17:50:36

标签: magento adminhtml

在Magento中,当尝试从前端生成链接以编辑客户时,我生成的链接总是将我重定向回管理区域的仪表板,即使它看起来正确。

我已经尝试过多个版本的Magento(以及社区和企业版),结果相同。

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

这会产生一个网址,例如:/ admin / customer / edit / id / 7 / key / f126e6cd7af2eb8cd068ff80fb512d4a /

这似乎是正确的,但是当它被点击时,它会将我发回给管理区域的仪表板。

但是,以下代码有效,并且不会将我重定向到仪表板:

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

如果我手动复制网址减去密钥,并将密钥替换为通过管理区域导航生成的密钥(即通过浏览器中导航栏复制工作密钥) ),它有效 - 所以我认为它必须以某种方式与之相关。

1 个答案:

答案 0 :(得分:1)

当您从前端生成管理URL时,Magento使用前端会话中的表单键。然后,当您单击该链接时,Magento会重新生成管理URL密钥以与链接中的密钥进行比较,但这次,它使用adminhtml表单密钥。由于表单键不匹配,因此散列的URL键不匹配,并且您的链接将不起作用。 Magento此时的行为是将您带回管理仪表板(或管理员登录页面)。

任何继承自Mage_Adminhtml_Controller_Action的控制器都可以通过将某些操作添加到$ _publicActions数组来允许某些操作不需要管理URL密钥。

例如,添加到Mage_Adminhtml_CustomerController

public $_publicActions = array('edit');