如何创建自定义方法?我理解在执行不同的HTTP调用时,例如POST,PUT,GET,DELETE等......但是如何创建或使用除主要方法之外的一些自定义方法?
例如
通过电子邮件获取用户?
目前我只能获得($ id)..但如果我想要两个选项怎么办?通过id获取,通过电子邮件获取?
答案 0 :(得分:0)
有几种解决方案。
您可以将带有GET
/查询参数的http请求发送到收集路径('www.example.com/users')。此请求应在AbstractRestfulController
其getList
方法内处理,然后返回一个包含与该电子邮件对应的用户的集合/数组。
因此,您对电子邮件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练习。