Zend Framework 2では、コンソールアプリケーションに初期モジュールバナーを追加するのは非常に簡単です。
必要なのは、getConsoleBanner
およびgetConsoleUsage
メソッドを実装し、Zend\ModuleManager\Feature\ConsoleUsageProviderInterface
またはConsoleBannerProviderInterface
インターフェースを実装することだけです。
これは、CLIを介してpublic/index.php
が開始されたときに、これらのメッセージをコンソールにダンプするのに十分です。
Zend Framework 3では、同じではありません。
同じ設定を行っても同じ結果は得られません。実際、コンソールには、ブラウザーからアクセスするのと同じ方法で、スケルトンアプリのデフォルトのhtmlページが表示されます。
このページは、カスタムモジュールをインストールする前に表示されます。zend-mvc-console
モジュールのドキュメントは次のとおりです https://zendframework.github.io/zend-mvc-console/intro/
提案どおりにモジュールをインストールした後(モジュール定義に'Zend\Mvc\Console'
を追加)でも、コンソールバナーは表示されません。メソッド内でvarダンプを使用してテストし、データを表示できるため、フレームワークはこれらのメソッドを実行しますが、コンソールに結果が表示されません。
コンソールルートとコントローラーでテストしました。ルートが見つかり、コントローラーアクションが実行されますが、CLIには何も表示されません。
フレームワークのコードを掘り下げましたが、Zend\Mvc\Console\ResponseSender\ConsoleResponseSender
クラスが実行されていないようです。
CLIに何かを表示するには、いくつかのview_manager
戦略を登録する必要がありますか?
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-console または symfony console を使用することをお勧めします。
私たちはare zend-mvc-consoleの問題を認識しており、それらに対処するためのパッチリリースをまもなく発行します。これにより、短期的な問題が修正されます。ただし、長期的には別のソリューションに移行することをお勧めします。