2016-10-05 10 views
1

私はちょうどdunglas apiプラットフォームの使用を開始しました。私はv2.0.0 - rc1を使用して、私はユーザーを有効/無効にカスタム操作を追加しました。APIカスタムパラメータを使用したプラットフォームのカスタム操作

これは私が私のドキュメントに行くときのカスタム操作が追加された機能が、私は4つのパラメータ送信する必要があり、このアクションを使用しているユーザー

<?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; 
    } 
} 

のための私のカスタムアクションです:電子メール、フルネーム、ユーザ名を、有効になりました。しかし、私は有効なパラメータを送信するだけで、ユーザーのIDはルートで与えられていますが、私は文書でどのようにパラメータを変更するのかを見つけることができません。

誰かがこれを手伝ってくれますか?

私は同じが無効/有効にするためにしようとしていたと私はそれをこのようにやった
+0

検証エラーが発生しましたか?クエリPUTの結果を投稿できますか? –

+0

解決方法を見つけましたか? –

答えて

1

私は私が持っている私のrouting.ymlAppBundle\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; 
    } 
} 

でのカスタムコントローラを作成:

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です。

希望する

関連する問題