2016-10-05 62 views
1

我刚开始使用dunglas api平台。我使用v2.0.0-rc1,并添加了一个自定义操作来启用/禁用用户。使用自定义参数的API平台自定义操作

这是我的用户

<?php 

namespace Zoef\UserBundle\Action; 

use Zoef\UserBundle\Entity\User; 
use Doctrine\Common\Persistence\ManagerRegistry; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 
use Symfony\Component\Routing\Annotation\Route; 

class UserAction 
{ 
    /** 
    * @Route(
    *  name="enabled_user", 
    *  path="https://stackoverflow.com/users/{id}/enabled", 
    *  defaults={"_api_resource_class"=User::class, "_api_item_operation_name"="enabled"} 
    *) 
    * @Method("PUT") 
    */ 
    public function __invoke(User $user) 
    { 
     if($user->isEnabled()) { 
      $user->setEnabled(false); 
     } else { 
      $user->setEnabled(true); 
     } 

     return $user; 
    } 
} 

自定义操作,当我去我的文档中添加的自定义操作和功能,但是使用这个动作我需要发送4个参数:电子邮件,全名,用户名,启用。但我只想发送启用的参数和用户的id在路由中给出,但我不能在文档中找到如何更改参数。

有人可以帮助我吗?

+0

您是否收到验证错误?你能发布查询PUT的结果吗? –

+0

您是否找到解决方案? –

回答

1

我试图做出同样的启用/禁用,我就是这么做的:

AppBundle\Controller\AddressController

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class AddressController extends Controller 
{ 
    public function enableAction($data) 
    { 
     $data->setActive(true); 

     $em = $this->getDoctrine()->getManager(); 
     $em->persist($data); 
     $em->flush(); 

     return $data; 
    } 
} 

创建一个自定义的控制器在我routing.yml我:

address_enable: 
    path:  '/addresses/{id}/enable' 
    methods: ['PUT'] 
    defaults: 
      _controller: 'AppBundle:Address:enable' 
      _api_resource_class: 'AppBundle\Entity\Address' 
      _api_item_operation_name: 'enable' 

在我的实体中,我有:

* @ApiResource(
*  itemOperations={ 
*   "enable"={"route_name"="address_enable"}, 
*  } 
*) 

然后我只是发送它为URL/addresses/123/enable不需要发送更多的参数,只是id。

希望它有帮助