2016-07-28 35 views
15

W Zend Framework 2 bardzo łatwo jest dodać początkowy baner modułu do aplikacji konsolowych.Tworzenie aplikacji konsolowej ZF3

Wszystko musimy jest wdrożenie metod i getConsoleUsagegetConsoleBanner i wdrożenie interfejsów Zend\ModuleManager\Feature\ConsoleUsageProviderInterface lub ConsoleBannerProviderInterface.

To wystarczy, aby zrzucić te wiadomości na konsoli po uruchomieniu public/index.php przez interfejs CLI.

W Zend Framework 3 to nie to samo.

Wykonanie tego samego ustawienia nie daje tego samego wyniku. Właściwie w konsoli widzimy domyślną stronę html dla szkieletu aplikacji w taki sam sposób, w jaki odwiedzamy ją przez przeglądarkę.

Że strona jest postrzegane zanim zainstalować moduł niestandardowe: Oto docs dla modułu zend-mvc-console https://zendframework.github.io/zend-mvc-console/intro/

Nawet po moduł jest zainstalowany zgodnie z sugestią ('Zend\Mvc\Console' dodany w definicjach modułów) chorągwie konsola nie są pokazane. Przetestowałem z var dumping wewnątrz metod i jestem w stanie przeglądać dane, więc framework wykonuje te metody, ale nie pokazuje wyniku w konsoli.

Testowałem przy użyciu tras konsoli i kontrolerów. Trasa zostanie znaleziona, akcja kontrolera zostanie wykonana, ale nic nie pojawi się ponownie w cli.

Wkopałem się w kod frameworka i wygląda na to, że klasa Zend\Mvc\Console\ResponseSender\ConsoleResponseSender nigdy nie jest wykonywana.

Czy muszę zarejestrować niektóre strategie view_manager, aby wyświetlić coś w interfejsie CLI?

Oto źródła na górze zf3 szkielet aplikacji: https://gist.github.com/kachar/06f0c9096bcc1cc0b00f4612aed1b68b

uruchamiając aplikację:

$ 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

To może być błąd w Zend-MVC-konsoli: https://github.com/zendframework/zend-mvc-console/ issues/12 – avy

+0

@kazar: Czy udało ci się wdrożyć konsolę zf zgodnie z sugestią @weierophinney?Jeśli tak, czy podzieliłbyś się z nami tym, czym się podzieliłeś? –

Odpowiedz

7

Per własnej dokumentacji, MVC <-> Console integration is deprecated. Zalecamy użycie zf-console lub symfony console do budowania funkcjonalności konsoli dla Twojej aplikacji.

Mamy świadomi problemów z Zend-MVC-konsoli, a będziemy wydanie wydanie wkrótce poprawki do ich rozwiązania, które będzie rozwiązać swoje problemy krótkoterminowych. Zalecamy jednak przeprowadzenie migracji do innego rozwiązania w dłuższej perspektywie.