Modul - Entwicklung

Um ein neues Modul anzulegen muss zuerst ein neuer Ordner unter "/application/modules" angelegt werden.
Der Name des Ordners sollte den Modulkey widerspiegeln.
Als Beispiel wäre für das Gästebuch Modul der Ordner "/application/modules/guestbook" anzulegen.

Die Ordnerstruktur eines Modules lautet:

  • modulekey/config
  • modulekey/boxes
  • modulekey/controllers
  • modulekey/mappers
  • modulekey/models
  • modulekey/translations
  • modulekey/views

Ordner die man nicht benötigt können natürlich weggelassen werden.

Url Schema

domain.tld/index.php/modulname/controllername/actionname/paramkey1/paramvalue1/...

Beim Aufruf der Adresse "localhost/index.php/news/index/save" wird demnach das Modul "news" , der Controller "index" und die action "save" aufgerufen. Standardmäßig wird bei nicht Angabe eines Controllers automatisch der "IndexController" instanziert bzw. bei nicht Angabe einer Action die "indexAction"-Methode aufgerufen.

Controller

Ein neuer Controller ist unter "/application/modules/modulkey/controllers/" abzulegen.
Ein neuer Admin - Controller ist unter "/application/modules/modulkey/controllers/admin" abzulegen.
Dieser Controller enthält dann sogenannte Actions.
Eine Action wird durch eine Methode dargestellt die die Endung "Action" trägt.

class Page_IndexController extends Ilch_Controller_Frontend
{
    public function indexAction()
    {
        }

    public function showAction()
    {
        $pageMapper = new Page_PageMapper();
        $pageKey = $this->getRequest()->getParam('page');
        $page = $pageMapper->getPageByKey($pageKey);

        if($page == null)
        {
            $this->getView()->set('content', 'page not found');
        }
        else
        {
            $this->getView()->set('content', $page->getContent());
        }
    }
}

Man kann eine "initAction()" definieren, welche vor jeder spezifischen Action aufgerufen wird.
In den Actions hat man Zugriff auf diverse Objekte wie z.B. getView/Layout/Request/Translation.

Views

Eine neue View ist unter "/application/modules/modulkey/views/controllerkey/actionkey.php" abzulegen.
Im Controller kann man Werte an die Views via

$this->getView()->set('key', 'value');
übergeben. Das gleiche Verfahren gilt auch für das Layout, allerdings müsste aus getView, getLayout gemacht werden.

Mappers

Ein neuer Mapper sollte unter "/application/modules/modulkey/mappers/xy.php" abegelegt werden.
Mit

$this->db()
steht im Mapper der Standard-Datenbankadapter zu Verfügung.

In Mappermethoden kann und sollte man den QueryBuilder verwenden, um SQL Queries zusammenzubauen und auszuführen.

Models

Ein neues Model sollte unter "/application/modules/modulkey/models/xy.php" abgelegt werden.
In jedem Model sollte es für jede Eigenschaft einen entsprechenden Getter bzw. Setter geben.

Install

Für die Installation kann man im "config" Ordner eine "config.php" anlegen.
In dieser Datei wird ein Array definiert mit Modulkonfigurationen.
In der install() - Methode können Statements zur Installation hinterlegt werden.

Translations

Translations sind unter "/application/modules/modulkey/translations/translations_langkey.php" abzulegen.
In dieser Datei wird ein PHP Array bestehend aus key/value Werten abgelegt.

Validations

Um Benutzereingaben einfach und an einem Ort zu überprüfen, kann die Validator-Klasse benutzt werden.