我已经在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上没有?
答案 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 ;
}