2017-06-13 1 views
1

私のapi-platformプロジェクトでは、カスタムPOST操作を作成したいと考えています。これはルーティングの注釈を使ってうまくいくが、私はYAMLを使用して立ち往生している。YAMLでカスタムPOST操作を定義する方法は?

APIリソース定義

# app/config/routing.yml 
foo_special: 
    path: '/foo/special' 
    methods: ['POST'] 
    defaults: 
     _api_resource_class: 'AppBundle\Entity\Foo' 
     _api_collection_operation_name: 'special' 

エラーメッセージのルーティング

# src/AppBundle/Resources/config/api_resources/resources.yml 
AppBundle\Entity\Foo: 
    collectionOperations: 
     get: 
      method: 'GET' 
     special: 
      route_name: 'foo_special' 

"ハイドラ:説明": "パスするためのコントローラを見つけることができません。\"/fooのを/特別な\ "ルートが間違って設定されています。"

ここで何が間違っていますか?

+0

YAMLにカスタムPOST操作はありません。 ASCIIやUTF-8のような操作はありません。 ASCII文字の意味の解釈は、YAMLスカラーに結合されていても、アプリケーションによって行われます。 – Anthon

+0

これは非常に役に立ちます。明確にしてくれてありがとう! –

答えて

0

meyerbaptiste on github引用:

あなたはADRパターンを(Actionクラス+ __invoke()法)、あなたがサービスとしてあなたのコントローラ(またはここにあなたのアクション)を定義して、コントローラとしてサービス名を使用する必要が使用している場合。 (すなわち、_controler: app.special_actionまたは_controller: AppBundle\Action\Special)。

アノテーションも使用できます(https://api-platform.com/docs/core/operations#creating-custom-operations-and-controllersを参照)。

0
defaults: 
     _controller: 'AppBundle:Foo:special' 
     _api_resource_class: 'AppBundle\Entity\Foo' 
     _api_collection_operation_name: 'special' 
+0

このコードスニペットをご利用いただきありがとうございます。 *なぜ*これが問題の良い解決策であるかを示すことによって[適切な説明は長期的価値を大幅に改善する](// meta.stackexchange.com/q/114762/350567)、将来的にはより有用になる他の同様の質問の読者。あなたの前提を含め、あなたの答えを[編集]して説明を加えてください。 – iBug

+0

少し説明が素晴らしいでしょう。 –