SUPEE-6788 yaması için özel modülün yönetici yönlendiricileri nasıl güncellenir?


34

Özel modülleri SUPEE-6788 yaması ile çalışacak şekilde nasıl güncelleyeceğimi bilmiyorum , talimatlar çok net değil.

Alan Storm'un öğreticisine dayanarak, test için www.silksoftware.com/magento-module-creator/ jeneratöründe basit bir modül yarattım. Mükemmel bir şekilde çalışan yönetici özel sayfasına sahip, ancak SUPEE-6788'de gereken düzeltmeleri uyguladığımda, yönetici sayfası 404 hatası gösteriyor.

Özel yönetici sayfasının URL’si:

localhost / index.php / admin / admin_adminhello / adminhtml_adminhellobackend / index / anahtar / 83f08ec4bddff37e47412e16acc8d3f6 /

İşte modülün yapılandırması:

<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>
    ...

İşte denetleyici:

/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();
    }
}

Çözüm

Yamadaki <routers>talimatlara dayanarak parçayı değiştirdim (muhtemelen yanlış):

<routers>
    <adminhtml>
        <args>
            <modules>
                <admin_adminhello after="Mage_Adminhtml">Pulsestorm_Adminhello_Adminhtml</admin_adminhello>
            </modules>
        </args>
    </adminhtml>
</routers>

Ancak şimdi URL yalnızca şunu gösterir 404 error:

localhost / index.php / admin / admin_adminhello / adminhtml_adminhellobackend / index / anahtar / 83f08ec4bddff37e47412e16acc8d3f6 /

Bu yeni yama için modülü doğru bir şekilde nasıl ayarlayabilirim? config.xmlBu düzeltme ekini uyguladıktan sonra sadece güncellemem gerekiyor mu yoksa yönetici sayfasının URL'sini de değiştirmem gerekiyor mu?

Yanıtlar:


42

Özel modülümü Magento'nun 6788 yamasıyla önerildiği gibi yeni bir şekilde kullanması için değiştirmeyi başardım. Bu yüzden burada başkaları için referans olarak veriyorum, bu konudaki soruyu da cevapladım.

  1. Config.xml dosyasında yönlendiriciye değiştirin:

Önce:

<admin>
    <routers>
        <adminhello>
            <use>admin</use>
            <args>
                <module>Pulsestorm_Adminhello</module>
                <frontName>admin_adminhello</frontName>
            </args>
        </adminhello>
    </routers>
</admin>

Sonra

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <adminhello before="Mage_Adminhtml">Pulsestorm_Adminhello_Adminhtml</adminhello>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
  1. Denetleyiciye Değiştir

2.1.

Yoldan önce

/app/code/local/Pulsestorm/Adminhello/controllers/Adminhtml/AdminhellobackendController.php

Yoldan sonra

/app/code/local/Pulsestorm/Adminhello/controllers/Adminhtml/Adminhello/AdminhellobackendController.php

2.2

Dersten önce

class Pulsestorm_Adminhello_Adminhtml_AdminhellobackendController extends Mage_Adminhtml_Controller_Action 
{
..
}

Dersten sonra

class Pulsestorm_Adminhello_Adminhtml_Adminhello_AdminhellobackendController extends Mage_Adminhtml_Controller_Action
{
...
}
  1. Bir adminhtml.xml dosyanız varsa (aşağıdaki gibi bir örnek verin)

Önce

<config>
    <menu>
        <adminhello_config translate="title" module="adminhello">
            <title>Adminhello Settings</title>
            <sort_order>100</sort_order>
            <children>
                <list_action translate="title" module="adminhello">
                    <title>Manage Hellos</title>
                    <sort_order>4</sort_order>
                <action>adminhello/adminhtml_adminhellobackend</action>
                </list_action>
...
            </children>
        </adminhello_config>
    </menu>
</config>

Sonra

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <menu>
        <adminhello_config translate="title" module="adminhello">
            <title>Adminhello Settings</title>
            <sort_order>100</sort_order>
            <children>
                <list_action translate="title" module="adminhello">
                    <title>Manage Hellos</title>
                    <sort_order>4</sort_order>
                <action>adminhtml/adminhello_adminhellobackend</action>
                </list_action>
...
            </children>
        </adminhello_config>
    </menu>
</config>
  1. Kodlarınızdaki değişiklik

Önce: URL’leri almak

Mage::getUrl('adminhello/adminhtml_adminhellobackend/doSomething')

Sonra: URL’leri alma

Mage::getUrl('adminhtml/adminhello_adminhellobackend/doSomething')
  1. Mizanpaj dosyalarında değişiklik yapın (örneğin, mizanpaj dosyalarınız varsa)

Düzenden önce

<adminhello_adminhtml_adminhellobackend_index>
...
</adminhello_adminhtml_adminhellobackend_index>

Düzenden sonra

<adminhtml_adminhello_adminhellobackend_index>
...
</adminhtml_adminhello_adminhellobackend_index>

Mükemmel! Bir cazibe gibi çalıştı!
BENN1TH

17

Bunu bulmak için saatler kaybettim. Sırf Magento'daki Dev'ler anlaşılabilir bir konfigürasyon yapma kabiliyetine sahip değiller, hatta kodlarını bir insanın okuyabileceği bir şekilde belgeliyorlar.

İlk önce config.xml dosyasına bir göz atalım

<routers>
<adminhtml>
    <args>
        <modules>
            <admin_adminhello after="Mage_Adminhtml">Pulsestorm_Adminhello_Adminhtml</admin_adminhello>
        </modules>
    </args>
</adminhtml>

Etiketlerin bütün anlamı değişti. "Modül" altındaki etiket sadece rastgele bir isimdir. XML derlendiğinde üzerine yazılmadığından emin olmak için benzersiz olduğundan emin olmanız yeterlidir. URL üzerinde etkisi var.

<admin_adminhello after= ..... >

Magento artık arka uç denetleyici sınıflarınızı "adminhtml" adında yeni bir alt klasöre taşımanızı bekliyor. Bu nedenle config.xml dosyasında _Adminhtml ekleyerek sınıf soneki ismini değiştirmek zorundasınız .

... >Pulsestorm_Adminhello_Adminhtml</admin_adminhello> ....

Senin durumunda bu klasör

Uygulamanın / kod / yerel / Pulsestorm / Adminhello / kontrolörleri / Adminhtml

Şimdi asıl sorun. Diğer (daha iyi) sistemi kullanarak, "FrontName" Tag kullanarak tanımlanmış kendi ad alanınız vardı. Artık bu lüksünüz yok, bu nedenle kontrol cihazınızın benzersiz bir adı olduğundan emin olmalısınız. Aksi takdirde diğer Eklentilerle çelişir. Bu nedenle, "AdminController.php" gibi bir şey adı verilen denetleyiciler artık iyi değil, sizin durumunuzdaki " AdminhelloController.php " gibi, projeye özel bir şey yapmalısınız

URL’niz daha sonra

http: //localhost/index.php/admin/adminhellobackend/index/key/83f08ec4bddff37e47412e16acc8d3f6/

Dosyayı yeniden adlandırdıktan veya taşıdıktan sonra denetleyici sınıf adını ayarlamayı unutmayın

/app/code/local/Pulsestorm/Adminhello/controllers/Adminhtml/AdminhellobackendController.php

Bu durumda, isim Pulsestorm_Adminhello_Adminhtml_AdminhellobackendController olacaktır.

Tabii ki aynı zamanda kullanılan herhangi bir URL ayarlamak gerekir ki menü öğeleri ve formlar size arka uç kullandıkları

Ayrıca emin açmak yapmak Geliştirici Modu içinde index.php dosyası. Denetleyicinin içinde bir hata varsa, 404 aldığınızı da fark ettim. Develeport modunda bir Stacktrace hatası alıyorsunuz.

Benim de yapmam gereken, kontrolör çağrıldığında sadece bir günlük yazmak, kontrolör yöntemine hiç erişilip erişilmediğini görmek.

/app/code/local/Pulsestorm/Adminhello/controllers/Adminhtml/AdminhellobackendController.php

class Pulsestorm_Adminhello_Adminhtml_AdminhellobackendController extends Mage_Adminhtml_Controller_Action
{
    public function indexAction()
    {
        Mage::log('Controller was accessed', null, 'controller.log', true);
        $this->loadLayout();
        $this->_title($this->__("My Test Page Title"));
        $this->renderLayout();
    }
}

Çalışırsa cevabını genişletebilir misin? Teşekkürler!
Claudiu Creanga

Tamam, bitmiş ... umut yardımcı olur
leedch

Heh, bir zamanlar eski MagentoCommerce forumlarında tekrar " henüz kodlarını belgeleyen " yorumunuzu yanıtlayan çok eğlenceli bir Magento geliştiricisi yanıtı yakaladı . "Ama kod kendi kendini belgeliyor ...". Umm perl pod testini geçemedi, şimdi değil. Yukarıdaki açıklama için teşekkürler, ihtiyacım vardı.
Fiasco Labs

3
Magento artık arka uç denetleyici sınıflarınızı "adminhtml" adında yeni bir alt klasöre taşımanızı bekliyor - bu doğru değil, denetleyici istediğiniz yerde olabilir, bu durumda yalnızca adminhtml klasörü altında bir başlangıç ​​rotası tanımlamışsınızdır. arasında Pulsestorm_Adminhello_Adminhtmlconfig.xml'de. Ayrıca, yönetici düzeni tutamaçlarını güncellemeniz ve yönetici URL'sini beğenmek için çağrıları yapmanız gerekir getUrl().
Jonathan Hussey

@leedch Ne olursa olsun denemem 404 hatası alıyorum, SUPEE-6788 yönetici yönünü değiştirdiğimde bu modülün işe yaramayacağını anlamaya çalışıyorum. Özel bir HTML faturası yazdırmak için basit bir modül. github.com/gaiterjones/magento-htmlinvoice
paj

8

İşte Magento SUPEE-6788 yamasından kaynaklanan uzatma ve kişiselleştirme çatışmaları için bir analiz / düzeltme aracı.

https://github.com/rhoerr/supee-6788-toolbox

Not: Herhangi bir düzeltme eki veya düzeltme eki düzeltmesi uygulamadan önce, her zaman web sitenizi ve veritabanınızı yedeklemeniz önerilir.

Neyin düzeltmesi gerektiğini analiz edebilirsiniz.

Analiz etmek için: SSH'den Çalıştır:php -f fixSUPEE6788.php -- analyze

Bu, hangi dosyaların sorun yaşadığını ve bunları nasıl düzeltebileceğinizi gösterecektir. Bu düzeltmeyi uygulamaz.

VEYA, değişiklikleri / düzeltmeyi de uygulayabilirsiniz.

Değişiklikleri uygulamak için: SSH'den çalıştırın:php -f fixSUPEE6788.php -- fix

Bu, düzeltmeyi otomatik olarak analiz eder ve uygular.


Sizin için İyi Hisse +1
Amit Bera

Bunu yaptım ama yine de tüm bu modüller için yönetici sayfaları sayfa 404
Wasiq Shahrukh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.