使用magento安全url进行操作时,表单提交不起作用


Form submit not working when using magento secure url for action

当submit运行一个小php将数据导出到csv时,我有一个from。php看起来像:

$out = '';
if (isset($_POST['csv_hdr'])) {
$out .= $_POST['csv_hdr'];
$out .= "'n";
}
if (isset($_POST['csv_text'])) {
$out .= $_POST['csv_text'];
}
$filename = "z_".date("Y-n-d",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-n-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");
print $out;
exit;

如果我对php文件做一个正常的路径,比如:,这就可以了

<form name="export"  action="http://website.com/getcsv.php"  method="post"> 

我现在正试图将这个php函数移到一个控制器中,并以这种方式调用它。我正在处理一个magento管理模块,所以我必须传递带有安全密钥的url。所以我把这个功能转移到控制器中的一个动作中:

public function getcsvAction(){
    $out = '';
    ...
}

然后我可以用类似于的东西来获取url

<?php echo Mage::helper("adminhtml")->getUrl("module/index/getcsv/");?>

这给了我一个与密钥的链接,比如:

http://website.com/module/index/getcsv/key/7431c859914c40d3f66dfcd1530813b3/

如果我将该链接粘贴到浏览器中,它将执行php fine。然而,当我在表单操作中替换它时,它就不再工作了,只是重定向到仪表板。我看不到任何错误输出,也不确定发生了什么。关于如何使用安全路径作为操作使POST工作,有什么想法吗?

多亏了这篇文章,我找到了它。

我需要将此添加到表单中:

<input type="hidden" name="form_key" value="<? echo $this->getFormKey(); ?>" /> 

您的URL缺少adminhtml区域。试试这个:

Mage::helper("adminhtml")->getUrl("*/module/index/getcsv/");