我正在尝试使用zend framework 2创建restful api模块。
我无法创建正确的module.config.php
我的新模块的文件夹结构是:
[...]/module/Api
[...]/module/Api/config
[...]/module/Api/src/Api/Controller
我的控制器命名为:ShortenerController.php位于 [...] /模块/原料药/ SRC /原料药/控制器/ ShortenerController.php
在其中我将命名空间设置为:
namespace Api\Controller;
在[...] / module / Api / config中我有module.config.php文件,其中包含以下代码:
<?php
return array(
'controllers' => array(
'invokables' => array(
'Api\Controller\Shortener' => 'Api\Controller\ShortenerController',
),
),
// The following section is new and should be added to your file
'router' => array(
'routes' => array(
'Api' => array(
'type' => 'segment',
'options' => array(
'route' => '/api/s/[:url]',
'defaults' => array(
'controller' => 'API\Controller\Shortener',
),
),
),
),
),
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
// 'template_map' => array(
// 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
// 'index/index' => __DIR__ . '/../view/index/index.phtml',
// 'error/404' => __DIR__ . '/../view/error/404.phtml',
// 'error/index' => __DIR__ . '/../view/error/index.phtml',
// ),
// 'template_path_stack' => array(
// 'application' => __DIR__ . '/../view',
// ),
'strategies' => array(
'ViewJsonStrategy',
),
),
);
当我尝试使用帖子数据调用curl到此链接时:
http://server_address/api/s/
我收到的错误如下:
PHP Fatal error: Class 'Api\\Controller\\ShortenerController' not found in /home/ertai/zf/library/Zend/ServiceManager/AbstractPluginManager.php on line 170
我在这做错了什么?我无法掌握我应该写入module.config.php文件的内容,以便有正确的路线。
答案 0 :(得分:0)
您似乎忘记在application.config.php
中声明您的模块:
return array(
'modules' => array(
'Application',
'Api',
),
顺便说一句,请注意默认的路线配置
'defaults' => array(
'controller' => 'API\Controller\Shortener',
),
这是区分大小写的,所以它应该是:
'defaults' => array(
'controller' => 'Api\Controller\Shortener',
),
我建议你设置一个默认动作:
'defaults' => array(
'controller' => 'Api\Controller\Shortener',
'action' => 'index',
),