Ich habe den folgenden Magento-Code:
protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
{
$response = $this->getResponse();
$response->setHeader('HTTP/1.1 200 OK','');
$response->setHeader('Pragma', 'public', true);
$response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
$response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
$response->setHeader('Last-Modified', date('r'));
$response->setHeader('Accept-Ranges', 'bytes');
$response->setHeader('Content-Length', strlen($content));
$response->setHeader('Content-type', $contentType);
$response->setBody($content);
$response->sendResponse();
die;
}
Wenn ich versuche, meinen Code zu validieren, tritt folgender Fehler auf: Von der Verwendung des Sprachkonstrukts wird abgeraten.
Was kann ich tun oder wie kann ich die Matrizenfunktion am besten ersetzen?
magento-1.9
php
module
admin
extensions
Robert
quelle
quelle
Antworten:
Es kommt darauf an, wo sich dieser Code befindet:
In einem Controller oder Beobachter nach dem Versand?
Dann müssen Sie die Antwort nicht senden und selbst beenden. Magento wird sich darum kümmern. Also statt
Rückkehr von der Aktion oder Beobachter:
Wenn Sie Beobachter nach dem Versand (in einem Controller) verhindern wollten, können Sie dies tun, indem Sie zusätzlich Folgendes anrufen:
In einem Beobachter vor dem Versand?
Ähnlich wie oben möchten Sie verhindern, dass der eigentliche Controller versendet wird:
Und vielleicht auch die Beobachter nach dem Versand:
Irgendwo anders?
Das ist ein Problem. Der Umgang mit Anfragen und Antworten ist Aufgabe des Controllers (und der Beobachter, die an Controller-bezogene Ereignisse gebunden sind). Der beste Weg wäre also herauszufinden, wie man diesen Code verschiebt.
quelle