Extensions Tutorial: Teil 2 - Admin Controller



In Teil2 unserer Extension Tutorials ergänzen wir das Backend mit einer Verwaltung für unsere Erweiterung.

1. Wie beginnen, indem wir zu unserer Verzeichnisstruktur aus Teil 1 zwei neue Dateien hinzufügen (controller und helper).

app/
   etc/
      modules/
        - Mxperts_All.xml (Oder Ihre Firmenname IhreFirme_All.xml)
   code/
      local/
         Mxperts/ (Oder Ihre Firmenname IhreFirme_All.xml)
            Tutorial/ (Bezeichnung Ihrer Erweiterung)
               Block/
                 - Index.php
               controllers/
                 - AdminController.php
                 - IndexController.php
               etc/
                 - config.xml
               Helper
                 - Data.php

2. Erstellen des Admin-Controllers

<?php
class Mxperts_Tutorial_AdminController extends Mage_Adminhtml_Controller_Action
{
    public function indexAction()
    {
		$this->loadLayout()
			->_addContent($this->getLayout()
                            ->createBlock('tutorial/index'))
			->renderLayout();
    }
}

Erklärung:
Der Admin-Controler wird im Vergleich zum Frontend-Controler von der Klasse Mage_Adminhtml_Controller_Action abgeleitet. Dies Klasse besitzt spezielle Funktionen für die Sicherheit und zur Darstellung im Backend. Zur Ausgabe verwenden wir wieder unser “Hallo Magento” aus Teil1. Sie sehen es an der Definition ->createBlock(’tutorial/index’), die mit der Definition aus dem Frontend-Controller identisch ist.

3. Ändern der config.xml

<?xml version="1.0"?>
<config>

    <modules>
        <Mxperts_Tutorial>
            <version>0.1.0</version>
        </Mxperts_Tutorial>
    </modules>

    <global>
         <helpers>
            <tutorial><class>Mxperts_Tutorial_Helper</class></tutorial>
        </helpers>
        <blocks>
            <tutorial>
                <class>Mxperts_Tutorial_Block</class>
            </tutorial>
        </blocks>
    </global>

    <adminhtml>
        <menu>
            <tutorial translate="title" module="tutorial">
                <title>Tutorial</title>
                <sort_order>100</sort_order>
                <action>tutorial/admin</action>
            </tutorial>
        </menu>
    </adminhtml>

    <frontend>
        <routers>
            <Mxperts_Tutorial>
                <use>standard</use>
                <args>
                    <module>Mxperts_Tutorial</module>
                    <frontName>tutorial</frontName>
                </args>
            </Mxperts_Tutorial>
        </routers>
    </frontend>

</config>

Erklärung:
Der Bereich <helpers> definiert die helper class, die für zukünftige Übersetzungen verwendet wird.
Im Bereich <adminhtml> definieren wir unser neues Menü.

4. Helper - Data.php

<?php
class Mxperts_Tutorial_Helper_Data extends Mage_Core_Helper_Abstract
{
}

Die Helper Klasse wird benötigt und muss definiert werden. Wenn man dies nicht tut, führt das zu einer Fehlermeldung, da Magento eine Standard-Klasse sucht und diese dann nicht finden kann.

Wenn Sie nun Ihr Backend Aufrufen, werden Sie den neuen Menüpunkt Tutorial finden. Wenn Sie das neue Menü anklicken erscheint wieder unser “Hallo Magento”.


Extensions Tutorial: Teil3 - Datenbank werde ich demnächst hier veröffentlichen.

Extensions Tutorial: Teil1 - “Hallo Magento”
Extensions Tutorial: Teil 3 - Datenbank

  • Twitter
  • Webnews
  • Mister-Wong
  • Facebook
  • Digg
  • BlogMarks
  • Share/Save/Bookmark

9 Kommentare to “Extensions Tutorial: Teil 2 - Admin Controller”

  1. Stephan Stephan sagt:

    Hey, super Tutorials. Brauche Magento für meine Bachelorarbeit und Euer Stuff ist der Perfekte Einstieg.

    Hab nur leider einen Fehler gemacht und das hier: “Die Helper Klasse wird benötigt und muss definiert werden. Wenn man dies nicht tut, führt das zu einer Fehlermeldung, da Magento eine Standard-Klasse sucht und diese dann nicht finden kann.” vergessen.

    jetzt kan nich den Cache nicht löschen, da das backend nicht mehr funktioniert. Was kann ich machen?

    Hab den Fehler: Fatal error: Class ‘Mage_Schaufenster_Helper_Data’ not found in C:\xampp\htdocs\magento\app\code\core\Mage\Core\Model\App.php on line 831

  2. Stephan Stephan sagt:

    Also ich hab den Fehler natürlich behoben. Kann halt den Cache nicht aktualisieren. Geht das noch? Oder muss ich jetzt im core rumfummeln? Ich kann doch nicht jedes mal das Ding neu aufsetzen!

  3. Stephan Stephan sagt:

    Ok. einfach die config.xml und die admincontroller.php löschen und cache löschen (var/cache) und schon rennt der laden wieder!

    • Hallo Stephan,
      danke für Deine Kommentare - das ist der klassische Falls wenn man Schreibfehler in der Definiton der Helper Klasse hat oder diese nicht definiert. Das bedeutet man muss den Fehler lokalisieren - da musste ich auch durch :-).
      Schön dass du es geschafft hast - ich hoffe es gibt Anderen, die ähnliche Schwierigkeiten haben, genügend Motivation weiterzumachen.

      Weiterhin viel Erfolg.
      Johannes Teitge

  4.  ds_1984 sagt:

    Klasse, jetzt tut sich was im Backend. :-) In Lektion 1 durfte ich erfahren das es mit “Groß- und Kleinschreibung” ernst gemeint war, denn es ist bei mir ewig und 3 Tage nichts gelaufen bis mir aufgefallen ist, dass ich in der Mxperts_All.xml unter app/etc/modules das Wort “standard” so geschrieben hatte: “Standard”.

    Ein Zeichen entscheidete über “Hello Magento” oder eben wie bei mir “404 not found”. Ich werde da jetzt echt mal besser drauf achten.

    @Johannes: Danke für die Info am Anfang, ich hoffe andere ignorieren die nicht so wie ich. :-(
    Läuft bisher alles glatt und den neuen Button im Backend habe ich auch. Noch kann ich der Sache
    folgen, glaube ich. :-)

    Ich werde es so machen, dass wenn ich nicht mehr durchsteige einfach einen Step zurück springe, dann macht es bestimmt wieder klick.

  5. aruss aruss sagt:

    hallo, wie kriegt man den die action auf adminhtml/tutorial umgestellt statt auf tutorial/admin

    damit die urls im backend auch alle gleich aussehen.

  6.  amy_82 sagt:

    hi zusammen, wo muss ich klasse Helper erstellen??

    PS: bestimmt ist eine blöde Frage, bin aber newbie

    Viele Grüße

  7.  mmelster sagt:

    Hallo,

    erstmal danke für das super Tutorial! Hat mir bisher sehr geholfen einen Einstieg zu finden und hat auch komplet auf anhieb alles funktioniert.

    Jetzt wollte ich allerdings im Shop unter System -> Allgemein: Web -> URL Optionen

    Den StoreCode in der URL mit ausgeben lassen und leider funktioniert der neue Menüpunkt nicht mehr. Es erschient folgender Fehler:

    Front controller reached 100 router match iterations

    Hat jemand eine Idee, woran dies liegen könnte?

    Grüße Micha

Kommentar erstellen

You must be logged in to post a comment.

Bitte beachten: Mxperts.de ist kein Supportforum sondern eine Informationsplattform, deshalb benutzt für Diskussionen das deutsche Forum von Magento. (Fragen/Kommentare zu den Tutorials ausgeschlossen). Außerdem gebe ich keinen kostenlosen Support zu Magento. Leider haben das einige Leser in letzter Zeit falsch Verstanden und ich bitte um Euer Verständnis. Ich denke diese Plattform ist von unserer Seite aus schon genügend Gratis-Leistung.