Zend framework 2 Rest API:调用getList()而不是get($ id)函数

Har*_*ara 7 php rest zend-rest zend-framework2

以下是我的模块配置文件

return array(
'controllers' => array(
    'invokables' => array(
        'RSMobile\Controller\User' => 'RSMobile\Controller\UserController',
    ),
),

// Routes for API calls
'router' => array(
    'routes' => array(

        'rsmobile' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '/rsmobile',
                'defaults' => array(
                    'controller' => 'RSMobile\Controller\User',
                )
            ),

            // Child routes
            'child_routes' => array(
                // Route for "user" API
                'user' => array(
                    'type' => 'segment',
                    'options' => array(
                        'route' => '/user[/:id]',
                        'constraints' => array(
                                               'id'     => '[0-9a-zA-Z]+',
                                                              ),
                        'defaults' => array(
                            'controller' => 'RSMobile\Controller\User',
                        )
                    ),
                ),
          )
Run Code Online (Sandbox Code Playgroud)

题:

我在UserController文件中扩展了AbstractRestfulController但是,当我用www.example.com/rsmobile/user?userid=1调用它时,它调用get-list而不是get.

路上的任何光都会有所帮助

谢谢

Gee*_*eek 4

我认为你只想使用www.example.com/rsmobile/user?userid=1模式而不是www.example.com/rsmobile/user/1

在 中AbstractRestfulController, 默认$identifierName设置为,。id如果在参数列表中找不到,id那么它将调用getList()方法。所以你可以做的是在你的控制器(必须扩展AbstractRestfulController)中编写以下代码:

public function __construct() {
    $this->identifierName = 'userId'; // Override $identifierName value specified in AbstractRestfulController.
}
Run Code Online (Sandbox Code Playgroud)