Je ne suis pas sûr de savoir comment mettre à jour des modules personnalisés pour fonctionner avec le correctif SUPEE-6788 , les instructions ne sont pas très claires.
Sur la base du tutoriel d' Alan Storm , j'ai créé un module simple dans le générateur www.silksoftware.com/magento-module-creator/ à des fins de test. Il a une page personnalisée dans admin qui fonctionne parfaitement, mais lorsque j'applique les correctifs requis dans SUPEE-6788, la page admin affiche une erreur 404.
L'URL de la page d'administration personnalisée est la suivante:
localhost / index.php / admin / admin_adminhello / adminhtml_adminhellobackend / index / key / 83f08ec4bddff37e47412e16acc8d3f6 /
Voici la configuration du module:
<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>
...
Voici le contrôleur:
/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();
}
}
Solution
J'ai remplacé la <routers>
partie en fonction des instructions du correctif comme ceci (probablement incorrectement):
<routers>
<adminhtml>
<args>
<modules>
<admin_adminhello after="Mage_Adminhtml">Pulsestorm_Adminhello_Adminhtml</admin_adminhello>
</modules>
</args>
</adminhtml>
</routers>
Mais maintenant, l'URL montre simplement 404 error
:
localhost / index.php / admin / admin_adminhello / adminhtml_adminhellobackend / index / key / 83f08ec4bddff37e47412e16acc8d3f6 /
Comment réparer le module correctement pour ce nouveau patch? Dois-je simplement mettre à jour config.xml
ou dois-je également changer l'URL de la page d'administration après avoir appliqué ce correctif?
J'ai perdu des heures à comprendre cela. Tout simplement parce que les développeurs de Magento ne sont pas capables de créer une configuration compréhensible, ou même de documenter leur code de manière à ce qu'un être humain puisse le lire.
Regardons d' abord le fichier config.xml
La signification entière des balises a changé. La balise sous "modules" est juste un nom aléatoire. vous devez simplement vous assurer qu'il est unique pour qu'il ne soit pas écrasé lors de la compilation du XML. Cela a une influence sur l'URL.
Magento s'attend maintenant à ce que vous déplaciez les classes de votre contrôleur principal dans un nouveau sous-dossier appelé "adminhtml". C'est pourquoi, dans le fichier config.xml, vous devez modifier le suffixe du nom de la classe en ajoutant _Adminhtml .
Dans votre cas, le dossier serait situé à
Maintenant le vrai problème. En utilisant l’autre (meilleur) système, vous avez défini votre propre espace de noms à l’aide de la balise "FrontName". Vous n'avez plus ce luxe, vous devez donc vous assurer que votre contrôleur a un nom unique. Sinon, cela entrerait en conflit avec d'autres extensions. Les contrôleurs nommés quelque chose comme "AdminController.php" ne sont plus bons, vous devez en faire quelque chose de spécifique au projet, comme dans votre cas " AdminhelloController.php "
Votre URL sera alors chagne à
N'oubliez pas de régler le nom de classe du contrôleur après avoir renommé ou déplacé le fichier.
Dans ce cas, le nom serait Pulsestorm_Adminhello_Adminhtml_AdminhellobackendController.
Bien sûr, vous devez également ajuster les URL utilisées dans les éléments de menu et les formulaires que vous utilisez dans le backend.
Assurez-vous également d'activer le mode développeur dans le fichier index.php . J'ai remarqué que si le contrôleur a un bogue, vous obtenez également un 404. Avec le mode Develeport, vous obtenez une erreur Stacktrace.
Ce que je voudrais aussi faire, c'est juste écrire un journal une fois que le contrôleur est appelé, afin que vous puissiez voir si la méthode du contrôleur a été utilisée.
la source
Pulsestorm_Adminhello_Adminhtml
dans config.xml. Vous devez également mettre à jour tous les descripteurs de présentation d'administrateur et les appels permettant de générer des adresses URL d'administration similairesgetUrl()
.Voici un outil d'analyse / de correction des conflits d'extension et de personnalisation résultant du correctif Magento SUPEE-6788.
https://github.com/rhoerr/supee-6788-toolbox
Remarque: avant d'appliquer un correctif ou un correctif, il est toujours recommandé de sauvegarder votre site Web et votre base de données.
Vous pouvez uniquement analyser ce qui doit être corrigé.
OU vous pouvez également appliquer les modifications / corrections.
la source