Ich bin nicht sicher, wie ich benutzerdefinierte Module aktualisieren soll, damit sie mit dem SUPEE-6788- Patch funktionieren . Die Anweisungen sind nicht sehr klar.
Basierend auf dem Tutorial von Alan Storm habe ich im Generator www.silksoftware.com/magento-module-creator/ ein einfaches Modul zum Testen erstellt. Es gibt eine benutzerdefinierte Seite in admin, die einwandfrei funktioniert. Wenn ich jedoch die in SUPEE-6788 erforderlichen Korrekturen vornehme, wird auf der Administrationsseite der Fehler 404 angezeigt.
Die URL der benutzerdefinierten Administrationsseite lautet:
localhost / index.php / admin / admin_adminhello / adminhtml_adminhellobackend / index / key / 83f08ec4bddff37e47412e16acc8d3f6 /
Hier ist die Konfiguration des Moduls:
<config>
<modules>
<Pulsestorm_Adminhello>
<version>0.1.0</version>
</Pulsestorm_Adminhello>
</modules>
<global>
<helpers>
<adminhello>
<class>Pulsestorm_Adminhello_Helper</class>
</adminhello>
</helpers>
<blocks>
<adminhello>
<class>Pulsestorm_Adminhello_Block</class>
</adminhello>
</blocks>
</global>
<admin>
<routers>
<adminhello>
<use>admin</use>
<args>
<module>Pulsestorm_Adminhello</module>
<frontName>admin_adminhello</frontName>
</args>
</adminhello>
</routers>
</admin>
...
Hier ist der Controller:
/app/code/local/Pulsestorm/Adminhello/controllers/Adminhtml/AdminhellobackendController.php
class Pulsestorm_Adminhello_Adminhtml_AdminhellobackendController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->_title($this->__("My Test Page Title"));
$this->renderLayout();
}
}
Lösung
Ich habe das <routers>
Teil basierend auf Anweisungen aus dem Patch wie folgt ersetzt (wahrscheinlich falsch):
<routers>
<adminhtml>
<args>
<modules>
<admin_adminhello after="Mage_Adminhtml">Pulsestorm_Adminhello_Adminhtml</admin_adminhello>
</modules>
</args>
</adminhtml>
</routers>
Aber jetzt zeigt die URL nur 404 error
:
localhost / index.php / admin / admin_adminhello / adminhtml_adminhellobackend / index / key / 83f08ec4bddff37e47412e16acc8d3f6 /
Wie kann ich das Modul für diesen neuen Patch richtig reparieren? Muss ich nur aktualisieren config.xml
oder muss ich auch die URL der Admin-Seite ändern, nachdem ich diesen Patch angewendet habe?
Ich habe Stunden verloren, um das herauszufinden. Nur weil die Entwickler bei Magento nicht in der Lage sind, eine verständliche Konfiguration zu erstellen oder ihren Code so zu dokumentieren, dass ein Mensch ihn lesen kann.
Schauen wir uns zuerst die config.xml an
Die gesamte Bedeutung der Tags hat sich geändert. Das Tag unter "modules" ist nur ein zufälliger Name. Sie müssen nur sicherstellen, dass es eindeutig ist, um sicherzustellen, dass es beim Kompilieren des XML nicht überschrieben wird. Es hat Einfluss auf die URL.
Magento erwartet nun, dass Sie Ihre Backend-Controller-Klassen in einen neuen Unterordner namens "adminhtml" verschieben. Aus diesem Grund müssen Sie in der config.xml das Suffix des Klassennamens ändern, indem Sie _Adminhtml hinzufügen .
In Ihrem Fall befindet sich der Ordner unter
Nun das eigentliche Problem. Bei Verwendung des anderen (besseren) Systems wurde Ihr eigener Namespace mithilfe des Tags "FrontName" definiert. Sie haben diesen Luxus nicht mehr und müssen sicherstellen, dass Ihr Controller einen eindeutigen Namen hat. Andernfalls würde es zu Konflikten mit anderen Erweiterungen kommen. Damit Controller mit dem Namen "AdminController.php" nicht mehr funktionieren, müssen Sie sie projektspezifisch anpassen , wie in Ihrem Fall " AdminhelloController.php ".
Ihre URL wechselt dann zu
Vergessen Sie nicht, den Controller-Klassennamen nach dem Umbenennen oder Verschieben der Datei anzupassen
In diesem Fall wäre der Name Pulsestorm_Adminhello_Adminhtml_AdminhellobackendController
Natürlich müssen Sie auch alle URLs anpassen, die in Menüelementen und Formularen verwendet werden , die Sie im Backend verwenden
Stellen Sie außerdem sicher, dass Sie den Entwicklermodus in der Datei index.php aktivieren . Ich habe festgestellt, dass, wenn der Controller einen Fehler enthält, auch ein 404 angezeigt wird. Im Develeport-Modus wird ein Stacktrace-Fehler angezeigt.
Ich würde auch einfach ein Protokoll schreiben, sobald der Controller aufgerufen wird, damit Sie sehen, ob überhaupt auf die Controller-Methode zugegriffen wurde.
quelle
Pulsestorm_Adminhello_Adminhtml
in config.xml. Sie müssen auch alle Handles für das Admin-Layout aktualisieren und Aufrufe, um Admin-URLs zu generieren, wie zgetUrl()
.Hier ist ein Analyse- / Korrektur-Tool für Erweiterungs- und Anpassungskonflikte, die sich aus dem Magento SUPEE-6788-Patch ergeben.
https://github.com/rhoerr/supee-6788-toolbox
Hinweis: Bevor Sie Patches oder Patchfixes anwenden, wird immer empfohlen, eine Sicherungskopie Ihrer Website und Datenbank zu erstellen.
Sie können nur analysieren, was behoben werden muss.
ODER Sie können die Änderungen / Korrekturen auch anwenden.
quelle