2

PhlyRestfullyモジュールを使用して、Zend Framework 2 で API を構築しようとしています。問題は、構成が正しいにもかかわらず、ResourceController がリソースへのディスパッチに失敗することです。これは私が応答として得るものです:

The requested controller was unable to dispatch the request.

Controller:
Api\Controller\Locations

No Exception available

以下に私の構成を説明します。

アプリケーション.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__' => 'Api\Controller',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'locations' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '/locations[/[:id]]',
                            'controller' => 'Api\Controller\Locations',
                            'defaults' => array(
                                'controller' => 'Api\Controller\Locations'
                            )
                        ),
                    ),
                ),
            ),
        ),
    ),
    'view_manager' => array(
        'strategies' => array(
            'ViewJsonStrategy'
        ),
    ),
    'phlyrestfully' => array(
        'resources' => array(
            'Api\Controller\Locations' => array(
                'listener' => 'Api\Resource\Location',
                'route_name' => 'api/locations'
            )
        )
    ),
);

API/リソース/場所.php

namespace Api\Resource;

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/locations

ResourceController が呼び出され、適切なリソースが挿入されるため、ルーティングは正常に機能します。Listener の attach() メソッドが呼び出されますが、イベントが Resource によって起動される代わりに、AbstractRestfulController の onDispatch メソッドが呼び出され、indexAction を使用して LocationsController を実際に定義していないため、404 が返されます。

PhlyRestfully は、提供された ResourceController を介してこれらのリソース コントローラーの存在をエミュレートし、これらのコントローラー クラスを実際に作成する必要はありません。これがモジュールの要点であるためです。

何か案は?

4

2 に答える 2

5

ルート構成でデフォルト アクションを削除します。

于 2013-05-28T09:58:45.033 に答える
2

Action そして、コントローラーでメソッドのサフィックスを忘れたときに、まさにこのエラーが発生しました。

于 2015-08-18T21:21:43.047 に答える