3

Cli名前空間で zf2 アプリ用のコンソール対応モジュールを作成しようとしています。単純なコントローラー、モジュール構成ファイル、および Module.php を使用してモジュール ディレクトリを作成しました。

問題は、コマンド ラインで「php public/index.php」を呼び出すと、以下のようにアプリのコンソール バナーの後に DoctrineModule のデフォルトの Cli 出力が表示されることです。

➜  myapp git:(master) ✗ php public/index.php
--- This is app banner ---

----------------------------------------------
DoctrineModule
----------------------------------------------

DoctrineModule Command Line Interface version 0.8.0

Usage:
  [options] command [arguments]
... bla bla ...

モジュール/Cli/config/module.config.php:

return array(
    'console' => array(
        'router' => array(
            'routes' => array(
                'testroute' => array(
                    'options' => array(
                        'route'    => '/',
                        'defaults' => array(
                            'controller'    => 'Cli\Controller\Index',
                            'action'        => 'index'
                        )
                    )
                )
            )
        )
    ),
);

module/Cli/Module.php の内容:

<?php
namespace Cli;

use Zend\ModuleManager\Feature\ConsoleBannerProviderInterface;
use Zend\Console\Adapter\AdapterInterface as Console;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;

class Module implements AutoloaderProviderInterface, ConsoleBannerProviderInterface
{
    public function getConsoleBanner(Console $console){
        return "--- This is app banner ---\n";
    }

    public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src'
                )
            )
       );
    }
}
4

1 に答える 1

0

これは、doctrine-module の複雑な性質によるものです。ルーティングに誤りがあると、このようなことが起こります。たとえば、一致するルートがない、コントローラーが見つからないなどです。

そして、ちなみに、

return array(
    'console' => array(
        'router' => array(
            'routes' => array(
                'testroute' => array(
                    'options' => array(
                        'route'    => '/',
                        'defaults' => array(
                            'controller'    => 'Cli\Controller\Index',
                            'action'        => 'index'
                        )
                    )
                )
            )
        )
    ),
);

部分がよく見えません。Web ルートでは「/」を使用しても問題ありませんが、コンソール ルートでは使用できません。Console routing docsに従って構成を再検討する必要があります。

于 2013-09-24T10:40:26.697 に答える