Форма отправки не работает при использовании magento безопасный URL для действий - PullRequest
2 голосов
/ 07 марта 2012

У меня есть сообщение, когда submit запускает небольшой php для экспорта данных в csv. 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 нормально. Однако, когда я заменяю его в своем действии формы, он больше не работает и просто выполняет перенаправление на панель инструментов. Я не вижу никаких ошибок вывода, и я не уверен, что происходит. Любые идеи о том, как заставить этот POST работать, используя безопасный путь в качестве действия?

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Я нашел это благодаря этому сообщению .

Мне нужно было добавить это в форму:

<input type="hidden" name="form_key" value="<? echo $this->getFormKey(); ?>" /> 
1 голос
/ 07 марта 2012

В вашем URL отсутствует область adminhtml. Попробуйте это:

Mage::helper("adminhtml")->getUrl("*/module/index/getcsv/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...