ZF2 Zend \ Console路由在Windows命令提示符下不匹配

时间:2014-05-22 07:43:50

标签: php zend-framework2

我已经在Zend Framework 2项目中设置了几个控制台路由进行测试,虽然它可以在linux(ubuntu 12.10)上运行,但它不能在我的Windows 7机器上使用命令提示符或cygwin。我只是收到以下错误消息:

  

失败原因:提供的参数无效或没有参数

在我的module.config.php文件中,我有

'console' => array(
    'router' => array(
        'routes' => array(
            'some-route' => array(
                'options' => array(
                    'route'    => 'some route',
                    'defaults' => array(
                        'controller'    => 'Application\Controller\Cron',
                        'action'        => 'some-route'
                    )
                )
            ),
            'another-route' => array(
                'options' => array(
                    'route'    => 'another route',
                    'defaults' => array(
                        'controller'    => 'Application\Controller\Cron',
                        'action'        => 'another-route'
                    )
                )
            )
        )
    )
)

在我的控制器中

class CronController extends AbstractActionController
{

    public function someRouteAction()
    {
        return 'some route called' . PHP_EOL;
    }

    public function anotherRouteAction()
    {
        return 'some other route called' . PHP_EOL;
    }
}

有没有人知道为什么完全相同的代码在ubuntu上工作但在Windows上没有?

1 个答案:

答案 0 :(得分:0)

1-您可以在Zend / Mvc / Service / RouterFactory.php上检查路由器工厂,以确保您的控制台路由配置不在缓存中。

public function createService(ServiceLocatorInterface $serviceLocator, $cName = null, $rName = null)
{
$config = $serviceLocator->get('Configuration') ;

//@ToDo Remove
print_r($config);  

if(
     $rName === 'ConsoleRouter' ||
      ($cName === 'router' && Console::isConsole())
) {
    if(isset($config['console']) && isset($config['console']['router'])){
        $routerConfig = $config['console']['router'] ;
    } else {
        $routerConfig = array();
    }
    $router = ConsoleRouter::factory($routerConfig) ;
} else {
    […]
}
return $router ;
}
  1. 或者,如果config_cache_enabled为真,则必须在application.config.php中进行验证