ZF2: Konsolenanwendung Teil 1

Heute will ich kurz zeigen wie man eine Konsolenanwendung mit dem ZF2 schreibt.

Als erstes legen wir die Route fest, die wir später per Konsole aufrufen wollen. Dazu legen wir in der module.config.php einen neuen Eintrag in der selben ebene wie „router“ und „navigation“.

// module.config.php
 
return array(
    'router' => array(
    ),
    ....
 
    'console' => array(
        'router' => array(
            'routes' => array(
                 'testRoute' => array(
                    'options' => array(
                        'route' => 'testKommando',
                        'defaults' => array(
                            'controller' => 'Test\Crons\TestController',
                            'action' => 'index',
                        ),
                    ),
                 ),
            ),
        ),
    ),
 
    ....
    'navigation' => array(
    )

Ich habe es mir angewöhnt die Crons in ein extra Verzeichnis zu legen. Natürlich können die Crons auch ganz normal im Controller Ordner liegen oder sogar auf eine Action eines vorhandenen Controllers zeigen.

Dann legen wir wie üblich bei Controllern einen Eintrag in der „controllers.config.php“ an.

return array(
    'invokables' => array(
        ....
       'Test\Crons\Test' => 'Test\Crons\TestCron'
       ...
     )
);

Nachdem wir die Datei im entsprechenden Verzeichnis angelegt haben können wir auch schon testen ob alles Funktioniert.

Je nach Konfiguration eurer Entwicklungsumgebung kann der Aufruf abweichend sein, da ihr eventuell noch den Pfad zum ZF2 angeben müsst. Daher schreibe ich den Aufruf in verkürzter Form.

php public/index.php testKommando

Bei meinem ersten Versuch die Anwendung aufzurufen erhielt ich folgende Meldung:

Zend Framework 2.2.4 application
Usage:
 
Reason for failure: Could not match to a controller

Ich hatte einen Fehler in der „controllers.config.php“, anstatt dem Verzeichnis „Cron“ hatte ich „Crons“ angegeben. Nach erfolgter Änderung gab mir meine Anwendung nichts zurück. Das ist aber keine Fehler sondern korrekt da wir im Cron-Controller keine Ausgabe haben.

Jetzt kann man damit beginnen den Controller mit Logik zu befüllen.

Im nächsten Teil gehe ich dann auf die Verwendung von Parametern zum Aufruf der Anwendung ein.

Kommentar verfassen