[英]Swagger is not working in integration with ZendFramework2
您能否提出为什么Swagger与ZendFramework2集成对我不起作用的原因。 我按照这里给出的说明进行操作。
composer.json :
{
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.3.5",
"outeredge/swagger-module": "dev-master"
},
}
config / application.config.php :
<?php
return array(
'modules' => array(
'MyApp',
'SwaggerModule',
),
'module_listener_options' => array(
'module_paths' => array(
'./module',
'./vendor',
),
),
);
?>
/config/autoload/swagger.global.php :
return array(
'swagger' => array(
'paths' => array(
__DIR__ . '/../../module/Morpho/src/Morpho/Controller',
),
'resource_options' => array(
'output' => 'array',
'json_pretty_print' => true, // for outputtype 'json'
'defaultBasePath' => null,
'defaultApiVersion' => null,
'defaultSwaggerVersion' => '1.2',
),
)
);
在Apache下部署应用程序后,调用http:// myapp / public / api / docs时 ,我得到:
{"errors":[{"message":"An error occurred during execution;
please try again later.","error":"error-exception","exception":
"class":"Zend\ServiceManager\Exception\ServiceNotCreatedException",
"file":"\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php",
"line":930,
"message":"An exception was raised while creating "Swagger\Swagger";
no instance returned"
Stacktrace :
0 \vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(1057): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Object(Closure), 'swaggerswagger', 'Swagger\Swagger')
1 \vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(633): Zend\ServiceManager\ServiceManager->createFromFactory('swaggerswagger', 'Swagger\Swagger')
2 \vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(593): Zend\ServiceManager\ServiceManager->doCreate('Swagger\Swagger', 'swaggerswagger')
3 \vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(525): Zend\ServiceManager\ServiceManager->create(Array)
4 \vendor\outeredge\swagger-module\src\SwaggerModule\Controller\DocumentationController.php(39): Zend\ServiceManager\ServiceManager->get('Swagger\Swagger')
5 \vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(83): SwaggerModule\Controller\DocumentationController->displayAction()
6 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
7 \vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
8 \vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
9 \vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractController.php(116): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
10 \vendor\zendframework\zendframework\library\Zend\Mvc\DispatchListener.php(113): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
11 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
12 \vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
13 \vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
14 \vendor\zendframework\zendframework\library\Zend\Mvc\Application.php(313): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
15 \public\index.php(10): Zend\Mvc\Application->run()
16 {main}"}}]}
swagger-module
似乎未激活。 请改为尝试https://github.com/zircote/swagger-php 。
1)在\\ config \\ autoload中创建swagger.local.php文件(在开发系统中为swagger.development.php )
2) swagger.local.php具有以下内容。
return array(
'swagger' => array(
'paths' => array(
__DIR__ . '/../../module/Api/src/Api/Controller',
),
'resource_options' => array(
'output' => 'array',
'json_pretty_print' => true,
'defaultBasePath' => '/',
'defaultApiVersion' => null,
'defaultSwaggerVersion' => '1.2',
),
)
);
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.