Nie jestem pewien, jak zaktualizować niestandardowe moduły do pracy z łatką SUPEE-6788 , instrukcje nie są bardzo jasne.
Opierając się na samouczku Alana Storma , stworzyłem prosty moduł w generatorze www.silksoftware.com/magento-module-creator/ do testowania. Ma niestandardową stronę w adminie, która działa idealnie dobrze, ale kiedy zastosuję poprawki wymagane w SUPEE-6788, strona admin pokazuje błąd 404.
Adres URL niestandardowej strony administratora to:
localhost / index.php / admin / admin_adminhello / adminhtml_adminhellobackend / index / key / 83f08ec4bddff37e47412e16acc8d3f6 /
Oto konfiguracja modułu:
<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>
...
Oto kontroler:
/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();
}
}
Rozwiązanie
Wymieniłem <routers>
część na podstawie instrukcji z łatki takiej (prawdopodobnie niepoprawnie):
<routers>
<adminhtml>
<args>
<modules>
<admin_adminhello after="Mage_Adminhtml">Pulsestorm_Adminhello_Adminhtml</admin_adminhello>
</modules>
</args>
</adminhtml>
</routers>
Ale teraz URL pokazuje tylko 404 error
:
localhost / index.php / admin / admin_adminhello / adminhtml_adminhellobackend / index / key / 83f08ec4bddff37e47412e16acc8d3f6 /
Jak poprawnie naprawić moduł dla tej nowej poprawki? Czy muszę tylko zaktualizować, config.xml
czy też muszę zmienić adres URL strony administratora po zastosowaniu tej poprawki?
Straciłem godziny, zastanawiając się nad tym. Tylko dlatego, że Devs w Magento nie są w stanie dokonać zrozumiałej konfiguracji, a nawet udokumentować swojego kodu w sposób, w jaki człowiek byłby w stanie go odczytać.
Najpierw spójrzmy na config.xml
Zmieniło się całe znaczenie tagów. Tag pod „modułami” to tylko losowa nazwa. musisz tylko upewnić się, że jest unikalny, aby nie został nadpisany podczas kompilacji XML. Ma wpływ na adres URL.
Magento oczekuje teraz, że przeniesiesz klasy kontrolera zaplecza do nowego podfolderu o nazwie „adminhtml”. Dlatego w config.xml musisz zmienić sufiks nazwy klasy, dodając _Adminhtml .
W twoim przypadku folder byłby zlokalizowany pod adresem
Teraz prawdziwy problem. Korzystając z innego (lepszego) systemu, zdefiniowano własną przestrzeń nazw za pomocą znacznika „FrontName”. Nie masz już tego luksusu, więc musisz upewnić się, że kontroler ma unikalną nazwę. W przeciwnym razie byłoby w konflikcie z innymi rozszerzeniami. Dlatego kontrolery o nazwie „AdminController.php” nie są już dobre, musisz uczynić to specyficznym dla projektu, tak jak w twoim przypadku „ AdminhelloController.php ”
Twój adres URL zmieni się wtedy na
Nie zapomnij dostosować nazwy klasy kontrolera po zmianie nazwy lub przeniesieniu pliku
W takim przypadku nazwa brzmiałaby Pulsestorm_Adminhello_Adminhtml_AdminhellobackendController
Oczywiście musisz także dostosować adresy URL używane w elementach menu i formularzach używanych w backendu
Upewnij się również, czy włączyłeś tryb programisty w pliku index.php . Zauważyłem, że jeśli w kontrolerze jest jakiś błąd, dostajesz również 404. W trybie Develeport pojawia się błąd Stacktrace.
Chciałbym również napisać dziennik po wywołaniu kontrolera, aby zobaczyć, czy w ogóle uzyskano dostęp do metody kontrolera.
źródło
Pulsestorm_Adminhello_Adminhtml
w config.xml. Musisz także zaktualizować dowolne uchwyty układu administratora i wywoływać generowanie adresów URL administratoragetUrl()
.Oto narzędzie do analizy / naprawy konfliktów rozszerzeń i dostosowań wynikających z poprawki Magento SUPEE-6788.
https://github.com/rhoerr/supee-6788-toolbox
Uwaga: przed zastosowaniem jakiejkolwiek poprawki lub poprawki poprawki zawsze zaleca się wykonanie kopii zapasowej witryny i bazy danych.
Możesz analizować tylko to, co trzeba naprawić.
LUB możesz także zastosować zmiany / poprawki.
źródło