В Zend Framework 2 очень просто добавить начальный баннер модуля в консольные приложения.
Все, что нам нужно, это реализовать getConsoleBanner
а также getConsoleUsage
методы и реализовать Zend\ModuleManager\Feature\ConsoleUsageProviderInterface
или же ConsoleBannerProviderInterface
интерфейсы.
Этого достаточно, чтобы вывести эти сообщения в консоль, когда public/index.php
запускается через CLI.
В Zend Framework 3 это не то же самое.
Выполнение одинаковых настроек не дает того же результата. На самом деле в консоли мы видим html-страницу по умолчанию для скелетного приложения так же, как мы видим ее через браузер.
Эта страница просматривается перед установкой пользовательского модуля:
Вот документы для zend-mvc-console
модуль
https://zendframework.github.io/zend-mvc-console/intro/
Даже после того, как модуль установлен как предложено ('Zend\Mvc\Console'
добавлены в определения модуля) баннеры консоли не показываются. Я проверил демпинг var внутри методов, и я могу просматривать данные, поэтому инфраструктура выполняет эти методы, но не показывает результат в консоли.
Я тестировал с консольными маршрутами и контроллерами. Маршрут найден, действие контроллера выполнено, но ничего не отображается снова.
Я копался в коде фреймворка и кажется Zend\Mvc\Console\ResponseSender\ConsoleResponseSender
класс никогда не выполняется.
Должен ли я зарегистрировать некоторые view_manager
стратегии, чтобы что-то отображалось в CLI?
Вот источники поверх скелетного приложения zf3:
https://gist.github.com/kachar/06f0c9096bcc1cc0b00f4612aed1b68b
Запуск приложения:
$ 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
По нашей собственной документации, MVC <-> Консольная интеграция устарела. Мы рекомендуем использовать ZF-консоль или же консоль Symfony для создания функциональности консоли для вашего приложения.
Мы являются мы знаем о проблемах с Zend-mvc-console, и мы скоро выпустим патч для их устранения, который исправит ваши краткосрочные проблемы. Тем не менее, мы рекомендуем перейти на другое решение в долгосрочной перспективе.
Вы можете использовать модуль zend-mvc-console. Тот же API, что и у консоли zf2 🙂
Пожалуйста, обратите внимание, что этот модуль скоро будет устаревшим.
Источники: