Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework 2 RESTful控制器操作_Php_Frameworks_Zend Framework2 - Fatal编程技术网

Php Zend Framework 2 RESTful控制器操作

Php 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 如果你们中有人能给我一些帮助,我将不胜感激 我不知道您是如何使用当前信息

在多次尝试之后,我无法在测试应用程序中使用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方法,但参数不同,我们会怎么做?