2016-07-28 31 views
15

In Zend Framework 2 ist es sehr einfach, das anfängliche Modulbanner zu den Konsolenanwendungen hinzuzufügen.So erstellen Sie die ZF3-Konsolenanwendung

Alles, was wir brauchen, ist, die getConsoleBanner und getConsoleUsage Methoden zu implementieren und den Zend\ModuleManager\Feature\ConsoleUsageProviderInterface oder ConsoleBannerProviderInterface Schnittstellen zu implementieren.

Dies ist gut genug, um diese Meldungen in der Konsole zu speichern, wenn public/index.php über CLI gestartet wird.

In Zend Framework 3 ist es nicht das gleiche.

Das gleiche Setup führt nicht zum selben Ergebnis. In der Konsole sehen wir die Standard-HTML-Seite für die Skelett-App genauso wie wir sie über den Browser aufrufen.

Diese Seite gesehen wird, bevor wir installieren Sie das benutzerdefinierte Modul: nicht die Konsole Banner wie vorgeschlagen installiert (in Moduldefinitionen 'Zend\Mvc\Console' hinzugefügt) sind, ist Hier sind die Dokumente für das zend-mvc-console Modul https://zendframework.github.io/zend-mvc-console/intro/

Auch nach Modul gezeigt. Ich habe mit var dumping in den Methoden getestet und kann die Daten anzeigen, sodass das Framework diese Methoden ausführt, aber kein Ergebnis in der Konsole anzeigt.

Ich habe mit Konsolenrouten und Controllern getestet. Die Route wird gefunden, die Controller-Aktion wird ausgeführt, aber im CLI wird nichts mehr angezeigt.

Ich habe in den Code des Framework gegraben und es scheint, dass die Zend\Mvc\Console\ResponseSender\ConsoleResponseSender Klasse nie ausgeführt wird.

Muss ich einige view_manager Strategien registrieren, damit etwas im CLI angezeigt wird?

Hier sind die Quellen auf der ZF3 Skelett Anwendung: https://gist.github.com/kachar/06f0c9096bcc1cc0b00f4612aed1b68b

die App laufen:

$ php -v 
PHP 7.0.6 (cli) (built: Apr 27 2016 14:00:40) (ZTS) 
Copyright (c) 1997-2016 The PHP Group 
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies 

$ php public/index.php 
Application\Module::getConsoleBanner 
Application\Module::getConsoleUsage 

$ php public/index.php user 
Application\Controller\IndexController::indexAction 
+1

Es könnte ein Fehler in zend-mvc-Konsole sein: https://github.com/zendframework/zend-mvc-console/ issues/12 – avy

+0

@kachar: Ist es dir gelungen, die von @weierophinney vorgeschlagene zf-console zu implementieren?Wenn ja, würdest du es mit uns teilen? –

Antwort

7

Per eigener Dokumentation, MVC <-> Console integration is deprecated. Wir empfehlen die Verwendung von zf-console oder symfony console zum Erstellen von Konsolenfunktionen für Ihre Anwendung.

Wir sind bewusst Probleme mit Zend-MVC-Konsole, und wir werden bald eine Patch-Version veröffentlichen, um sie zu adressieren, die Ihre kurzfristigen Probleme beheben wird. Wir empfehlen jedoch, langfristig auf eine andere Lösung zu migrieren.