【问题标题】:Why DoctrineModule Cli steps in ZF2 app's command line requests?为什么 DoctrineModule Cli 在 ZF2 应用程序的命令行请求中执行步骤?
【发布时间】:2013-09-24 09:20:28
【问题描述】:

我正在尝试在 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'
                )
            )
       );
    }
}

【问题讨论】:

  • 我的测试问题是:我忘了用“controllers => invokables”配置数组中的新控制器更新“module.config.php”-.-'

标签: doctrine-orm zend-framework2 command-line-interface


【解决方案1】:

这是因为教义模块的复杂性质。当出现路由错误时,就会发生这种事情。例如,没有匹配的路由,找不到控制器等。

顺便说一句,

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

部分看起来不太好。虽然网络路由可以有“/”,但对于控制台路由却不是。你应该按照Console routing docs重新考虑你的配置。

【讨论】:

  • akond,感谢您的回答。我只是尝试用'route' =&gt; 'foo' 更改'route' =&gt; '/' 并通过php public/index.php foo 调用应用程序(也尝试不使用foo php public/index.php)但没有任何改变。
  • “require”部分的 composer.json 内容是什么?我会尝试重现错误。
  • 这里有同样的问题!
  • @foozy,描述的错误有什么解决方案吗?我现在只是坐在同样的问题上:-/
猜你喜欢
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多