被请求的控制器无法调度请求



我试图使用phlyrest模块来构建Zend框架2的API。问题是,虽然我有一个正确的配置,但ResourceController无法调度到Resource。这是我得到的响应:

The requested controller was unable to dispatch the request.
Controller:
ApiControllerLocations
No Exception available

我将在下面描述我的配置:

application.php

'modules' => array(
    'PhlyRestfully',
    'Api',
    'Application',
)

Api/config/module.config.php

return array(
    'router' => array(
        'routes' => array(
            'api' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/api',
                    'defaults' => array(
                        '__NAMESPACE__' => 'ApiController',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'locations' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '/locations[/[:id]]',
                            'controller' => 'ApiControllerLocations',
                            'defaults' => array(
                                'controller' => 'ApiControllerLocations'
                            )
                        ),
                    ),
                ),
            ),
        ),
    ),
    'view_manager' => array(
        'strategies' => array(
            'ViewJsonStrategy'
        ),
    ),
    'phlyrestfully' => array(
        'resources' => array(
            'ApiControllerLocations' => array(
                'listener' => 'ApiResourceLocation',
                'route_name' => 'api/locations'
            )
        )
    ),
);
Api/资源/Location.php

namespace ApiResource;
class Location extends AbstractListenerAggregate
{
    public function attach(EventManagerInterface $events)
    {
        $this->listeners[] = $events->attach('fetch', array($this, 'onFetch'));
        $this->listeners[] = $events->attach('fetchAll', array($this, 'onFetchAll'));
    }
    public function onFetchAll(ResourceEvent $e)
    {
        var_dump($e);
    }
    public function onFetch(ResourceEvent $e)
    {
        var_dump($e);
    }
}

我省略了一些为了简洁而不必要的用法和其他行。

URL:

/api/位置

路由工作正常,因为调用了resourceconcontroller并注入了适当的Resource。调用侦听器上的attach()方法,但不是由资源触发的事件,而是调用AbstractRestfulController的onDispatch方法,它返回404,因为我实际上没有使用indexAction定义LocationsController。

这是我的理解,phlyrest通过提供的ResourceController模拟这些资源控制器的存在,你不需要实际创建这些控制器类,因为这是整个模块的重点。

任何想法?

删除路由配置中的默认操作

当我忘记了控制器中方法的 Action 后缀时,这个错误发生在我身上。

最新更新