Php Zend Framework 2 RESTful控制器操作
在多次尝试之后,我无法在测试应用程序中使用rest功能 我想知道是否有人对Zend FrameWork 2.0.0beta3中的RestfulController类有经验 我从RestfulController抽象类实现了这些方法,让getList()方法回显“Foo”,做了一个curl请求以获得一些输出,但我一直得到的只是一个空白屏幕 我知道zend framework 1.x有很多选项,但对于我的项目,我需要使用2.xPhp Zend Framework 2 RESTful控制器操作,php,frameworks,zend-framework2,Php,Frameworks,Zend Framework2,在多次尝试之后,我无法在测试应用程序中使用rest功能 我想知道是否有人对Zend FrameWork 2.0.0beta3中的RestfulController类有经验 我从RestfulController抽象类实现了这些方法,让getList()方法回显“Foo”,做了一个curl请求以获得一些输出,但我一直得到的只是一个空白屏幕 我知道zend framework 1.x有很多选项,但对于我的项目,我需要使用2.x 如果你们中有人能给我一些帮助,我将不胜感激 我不知道您是如何使用当前信息
如果你们中有人能给我一些帮助,我将不胜感激 我不知道您是如何使用当前信息实现它的,但是Restful应该可以很好地与ZF2配合使用。我让它在beta2工作
- 确保您的控制器扩展RestfulController,并正确选择控制器和id参数,即“/[:controller[/[:id]]”。使用“Zend\Mvc\Router\Http\Segment”作为路由类型
- 将curl与HTTP GET方法和no id一起使用时,应该调用getList()方法。如果指定了一个id,它将调用get($id)
- 请尝试返回数组,而不是回显
你也可以看看GitHub上的应用程序,从中获得灵感。我正在开发同一类型的应用程序,到目前为止,它运行得还不错 路由:
'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',
...
)
在控制器中,返回渲染的内容类型取决于您自己的策略,可以通过不同的方式实现
在我的例子中,它需要能够以各种格式响应,例如:php serialize
、json
、amf
和xml
,我使用Zend\Serializer\Adapter
来序列化我的内容并直接返回响应实例,您可以在控制器操作中直接返回它,也可以通过捕获RestfulController的分派事件并通过回调处理程序返回它来集中化它
快速概述:
namespace Rest\Controller
{
use Zend\Mvc\Controller\RestfulController;
class IndexController extends RestfulController
{
public function getList()
{
$content = array(
1 => array(
'id' => 1,
'title' => 'Title #1',
),
2 => array(
'id' => 2,
'title' => 'Title #2',
),
);
/**
* You may centralized this process through controller's event callback handler
*/
$format = $this->getEvent()->getRouteMatch()->getParam('format');
$response = $this->getResponse();
if($format=='json'){
$contentType = 'application/json';
$adapter = '\Zend\Serializer\Adapter\Json';
}
elseif($format=='sphp'){
$contentType = 'text/plain';
$adapter = '\Zend\Serializer\Adapter\PhpSerialize';
}
// continue for xml, amf etc.
$response->headers()->addHeaderLine('Content-Type',$contentType);
$adapter = new $adapter;
$response->setContent($adapter->serialize($content));
return $response;
}
// other actions continue ...
}
}
另外,不要忘记在应用程序配置中注册模块,请考虑查看以下ZF2模块:
- (免责声明:我是本文作者)
具体来说,Module.php和config/Module.config.php文件可能会有所帮助。您的模块实现作为模块框架和示例都非常有用。我发现您的模块是最好的,易于理解和使用。我正在寻找一种测试控制器的方法,你能给我提供一个很好的例子吗[我已经创建了一个github问题]关于这一点,如果我们想实现另一个get方法,但参数不同,我们会怎么做?