我試圖用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模擬了這些資源控制器的存在,並且您不需要實際創建這些控制器類,因爲這是模塊的全部要點。
任何想法?
此外,如果你的REST路由是需要一個默認的動作與另一路線的孩子,那麼你可以設置你的休息默認操作爲'null',而不是完全清除它的 – dKen