2013-05-28 42 views
2

我試圖用PhlyRestfully模塊構建的API與Zend框架2.請求的問題是,雖然我有一個正確的配置,ResourceController未能分派到資源。這是我得到的迴應:ZF2與PhlyRestfully請求控制器無法派遣

The requested controller was unable to dispatch the request. 

Controller: 
Api\Controller\Locations 

No Exception available 

我將在下面說明一下我的配置:

application.php

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

阿比/配置/ 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' 
      ) 
     ) 
    ), 
); 

阿比/資源/ Location.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); 
    } 
} 

我省略了一些用途等線路是不是簡潔關鍵。

網址:/ API /地點

路由工作正常,因爲ResourceController被稱爲並用適當的資源注入。調用Listener上的attach()方法,但不是由Resource觸發事件,而是調用AbstractRestfulController的onDispatch方法,並返回404,因爲我實際上沒有用indexAction定義LocationsController。

我的理解是,Phly通過提供的ResourceController模擬了這些資源控制器的存在,並且您不需要實際創建這些控制器類,因爲這是模塊的全部要點。

任何想法?

回答

5

刪除您的路線配置的默認操作。

+3

此外,如果你的REST路由是需要一個默認的動作與另一路線的孩子,那麼你可以設置你的休息默認操作爲'null',而不是完全清除它的 – dKen

2

而正是這個錯誤發生在我身上時,我忘了Action後綴我的方法在我的控制器。