Контроллер использования платформы Symfony api - PullRequest
0 голосов
/ 29 ноября 2018

Я использую платформу API в Symfony 4, и у меня есть вопрос

Я хотел бы знать, как создать контроллер с платформой API и создать 2 маршрута в get

Я покажу вам, чтоЯ сделал на данный момент:

мой контроллер:

/**
 * @var UnedicPublicationOrderRepository
 */
private $publicationOrderRepository;

public function __construct(UnedicPublicationOrderRepository $publicationOrderRepository)
{
    $this->publicationOrderRepository = $publicationOrderRepository;
}


public function __invoke()
{
    $cible = $this->publicationOrderRepository->findAll();

    return $cible;
}

и мой объект для публикации

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Annotation\ApiResource;

/**
 * UnedicPublicationOrderController
 *
 * @ApiResource(
 *     collectionOperations={"get"={"method"="GET"}},
 *     itemOperations={
 *     "get"={"method"="GET", "path"="/publication/{cible}"},
 *     }
 * )
 * @ORM\Table(name="foo")
 * @ORM\Entity

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

если ваш контроллер возвращает коллекцию, вам нужно добавить маршрут в collectionOperations, в противном случае зарегистрируйте его в разделе itemOperations.Не забудьте импортировать класс контроллера в сущности.

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Controllers\UnedicPublicationOrderController; // import controller
/**
 * UnedicPublicationOrderController
 *
 * @ApiResource(
 *     collectionOperations={
            "get"={"method"="GET"},
            "get_publication_order"={
               "path"="/publication_orders/all",
               "method"="GET",
               "controller"=UnedicPublicationOrderController::class     
             }
   },
 *     itemOperations={
 *           "get"={"method"="GET", "path"="/publication/{cible}"},
 *     }
 * )
 * @ORM\Table(name="foo")
 * @ORM\Entity

Вы также можете проверить документы для получения дополнительных примеров create-custom-operations-and-controller

0 голосов
/ 04 декабря 2018

Чтобы использовать определенный контроллер для пользовательской операции, вам необходимо добавить контроллер в качестве опции

use App\Controller\UnedicPublicationOrderController;

/**
 * @ApiResource(
 *     itemOperations={
 *         "customGet"={
 *             "method"="GET",
 *             "path"="/publication/{cible}",
 *             "controller"=UnedicPublicationOrderController::class,
 *         },
 *     },

Полный пример можно увидеть в документации

...