Создание настраиваемых операций (collectionOperations) и контроллеров

В документации есть пример для элемента Operation (https://api-platform.com/docs/core/operations#creating-custom-operations-and-controllers). Как сделать то же самое для операций по сбору? Вот что сделано, но не работает.

    // src/AppBundle/Entity/Book.php

    * @ApiResource(collectionOperations={
    *     "get",
    *     "special"={"route_name"="book_special"}
    * })

    class Book
    {
       ...
    }

маршрутизация:

 book_special: 
 path: '/books/special'
 methods:  ['POST']
 defaults:
     _controller: 'AppBundle:Book:special'
     _api_resource_class: 'AppBundle\Entity\Book'
     _api_collection_operation_name: 'special'

И контроллер:

class BookController extends Controller
{
    public function specialAction(Book $book, Request $request)
    {
        //in the variable $book there is nothing
        //in the variable $request there is nothing
        return $book;
    }
}

Как в контроллере получить запрос данных api?


person kup9tko    schedule 21.02.2018    source источник


Ответы (1)


Как указано в документации: «По соглашению параметр действия должен называться $data.».

Следующее должно помочь:

public function specialAction(Book $data, Request $request)
{
   // ...
}

Это связано с тем, что платформа API внутренне использует атрибуты запроса Symfony.

person Kévin Dunglas    schedule 01.03.2018