web-dev-qa-db-ja.com

ZF3コンソールアプリケーションの作成方法

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
18
kachar

私たち自身のドキュメントによると、 MVC <->コンソール統合は非推奨です 。アプリケーションのコンソール機能を構築するには、 zf-console または symfony console を使用することをお勧めします。

私たちはare zend-mvc-consoleの問題を認識しており、それらに対処するためのパッチリリースをまもなく発行します。これにより、短期的な問題が修正されます。ただし、長期的には別のソリューションに移行することをお勧めします。

11
weierophinney