Überschreiben Sie einen Controller in Adminhtml

7

Derzeit versuche ich, den GroupController von Mage_Adminhtml_Customer zu überschreiben, damit ich im Menü Kundengruppen Code zum Speichern meines benutzerdefinierten Felds hinzufügen kann. Wie Sie sich vorstellen können, funktioniert es nicht wirklich so, wie ich es möchte, was bedeutet, dass mein Controller von Magento bisher ignoriert wird, aber ich verstehe den Fehler, den ich gemacht habe, nicht. Hier sind die Schnipsel:

<?xml version="1.0" ?>
<config>
    [...]
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Mynamespace_CustomerGroupReturnable before="Mage_Adminhtml">Mynamespace_CustomerGroupReturnable</Mynamespace_CustomerGroupReturnable>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

Und der Controller:

require_once 'Mage/Adminhtml/Customer/controllers/GroupController.php';

class Mynamespace_CustomerGroupReturnable_GroupController extends Mage_Adminhtml_Customer_GroupController
{
    public function saveAction()
    {
        die(':D'); //just for testing
    }
}

Kann jemand sehen, was fehlt? Vielen Dank!

HamuSumo
quelle
1
Ich denke, Sie benötigen die falsche Datei. Dies Mage/Adminhtml/Customer/controllers/GroupController.phpsollte seinMage/Adminhtml/controllers/Customer/GroupController.php
Marius
Oh ja, du hast recht. Vielen Dank! Magento ist jedoch immer noch nicht erstaunt und ignoriert es.
HamuSumo

Antworten:

14

Legen Sie Ihre Controller-Datei in einem Admintml-Ordner ab. Verwenden Sie besser einen ähnlichen Ordnerpfad der Klasse, den Sie überschreiben möchten.

config.xml

<?xml version="1.0" ?>
<config>
    [...]
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Mynamespace_CustomerGroupReturnable before="Mage_Adminhtml">Mynamespace_CustomerGroupReturnable_Adminhtml</Mynamespace_CustomerGroupReturnable>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

Controller-Datei:

require_once 'Mage/Adminhtml/controllers/Customer/GroupController.php';

class Mynamespace_CustomerGroupReturnable_Adminhtml_GroupController extends Mage_Adminhtml_Customer_GroupController
{
    public function saveAction()
    {
        die(':D'); //just for testing
    }
}
Sukeshini
quelle
Ja, der fehlende Adminhtml-Ordner hat das Problem verursacht. Vielen Dank!
HamuSumo
2
Und auch so (WICHTIG für diese Methode), dass der Pfad zum Controller unter Adminhtml mit dem Pfad des überlasteten Controllers übereinstimmt. Zum Beispiel: Mage / Adminhtml / controller / Catalog / productController.php Mein_Modul / controller / Adminhtml / Catalog / productController.php
Mohamed23gharbi
0

Ok, fang an zu testen.

Fügen Sie zuerst einen Würfel vor der Klassendefinition hinzu, um zu überprüfen, ob die Klassendatei geladen ist.

Fügen Sie dann ein Leerzeichen hinzu <conf ig>, um zu überprüfen, ob Ihre Konfigurationsdatei geladen ist.

Überprüfen Sie das Backend , System > Config > Advancedob Sie die Ausgabe des Moduls verhindern kann (falls ja, die module.xmlin app/etc/moduleszumindest geladen)

Welche URL testest du? sollte sein:

http: //magento.local/ / group / save

Deaktivieren Sie den Authentifizierungsschlüssel im Backend (fragen Sie mich nicht wo), um einen Fehler mit dem fehlenden Authentifizierungsschlüssel in der URL zu vermeiden

Und die letzten Worte: Code sieht gut aus, ich denke, der Fehler liegt woanders.

Fabian Blechschmidt
quelle