Zend Framework 2 RESTful控制器操作

时间:2012-03-07 13:21:47

标签: php frameworks zend-framework2

经过多次尝试后,我无法让我的休息功能在我的测试应用程序中运行。

我想知道是否有人在Zend FrameWork 2.0.0beta3中有RestfulController类的经验。

我实现了RestfulController抽象类中的方法,让getList()方法回显“Foo”,做了一个curl请求得到一些输出,但我一直得到的是一个空白屏幕。

我知道zend framework 1.x有选项,但对于我的项目,我需要使用2.x.

如果有人能给我一些帮助,我将不胜感激!

3 个答案:

答案 0 :(得分:5)

我正在开发相同类型的应用程序,到目前为止它工作得很好

路由:

'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
    'route' => '/[:controller[.:format][/:id]]',
    'constraints' => array(
        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
        'format' => '(xml|json|sphp|amf)',
        'id' => '[1-9][0-9]*',
    ),
    'defaults' => array(
        'controller' => 'Rest\Controller\IndexController',
        'format' => 'json',
    ),

DI别名:

'alias' => array(
    'index' => 'Rest\Controller\IndexController',
    ...
)
在Controller中

,您为渲染返回的内容类型取决于您自己的策略,它可以通过不同的方式实现。

就我而言,它需要能够以各种格式进行回复,例如:php serializejsonamfxml,我使用{{1}序列化我的内容并直接返回响应实例,要么直接在控制器操作中返回它,要么通过捕获RestfulController的dispatch事件并通过回调处理程序返回它来集中它。

快速概述:

Zend\Serializer\Adapter

也不要忘记在应用程序配置中注册您的模块

答案 1 :(得分:3)

我无法告诉您如何使用当前信息实现它,但Restful应该可以正常使用ZF2。我让它在beta2中工作。

  • 确保您的控制器扩展RestfulController并且您的路由正确地拾取控制器和id参数,即。 '/ [:控制器[/ [:ID]]]'。使用'Zend \ Mvc \ Router \ Http \ Segment'作为路由类型。
  • 将curl与HTTP GET方法一起使用并且没有id应该调用getList()方法。如果指定了id,则会调用get($ id)。
  • 尝试返回数组,而不是回显。

您还可以查看GitHub上的ZF2 Restful Module Skeleton获取灵感。

答案 2 :(得分:3)

考虑一下这些ZF2模块:

具体来说,Module.php和config / module.config.php文件可能会有所帮助。