ZF2 AbstractRestfulController自定义方法

时间:2014-06-16 18:13:21

标签: zend-framework2

如何创建自定义方法?我理解在执行不同的HTTP调用时,例如POST,PUT,GET,DELETE等......但是如何创建或使用除主要方法之外的一些自定义方法?

例如

通过电子邮件获取用户?

目前我只能获得($ id)..但如果我想要两个选项怎么办?通过id获取,通过电子邮件获取?

1 个答案:

答案 0 :(得分:0)

有几种解决方案。

您可以将带有GET /查询参数的http请求发送到收集路径('www.example.com/users')。此请求应在AbstractRestfulControllergetList方法内处理,然后返回一个包含与该电子邮件对应的用户的集合/数组。

因此,您对电子邮件some_email@example.com的用户的请求如下所示:

http://www.example.com/users?email=some_email%40example.com

您需要以可以处理查询参数的方式自定义getList操作。 控制器中的东西是这样的:

$email = $this->params()->fromQuery('email');

然后,您需要在数据库中搜索具有该$email的用户,然后将其返回到数组或集合中。

另一种方法是向控制器添加自定义操作:

public function myCustomAction(){
    -- SOME CUSTOM CODE --
}

然后在路由器中引入自定义路由并将其映射到控制器操作,就像通常在ZF2中一样:

'my_custom_route' => array(
    'type' => 'literal',
    'options' => array(
        'route' => '/my_custom_route',
        'defaults' => array(
            'controller' => 'MyControllerWithCustomAction',
            'action'     => 'myCustomAction',
        ),
    ),
),

这意味着您可以添加自定义路由以通过电子邮件查找用户。即使ZF2允许你这样做,也不是根据适当的Restful练习。