Symfony api平台使用控制器

Cro*_*end 1 php api symfony api-platform.com

我在 symfony 4 中使用 api 平台,我有疑问

我想知道如何使用 api 平台创建一个控制器并在 get 中创建 2 个路由

我向您展示我现在所做的事情:

我的控制器:

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

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


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

    return $cible;
}
Run Code Online (Sandbox Code Playgroud)

和我的发布实体

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
Run Code Online (Sandbox Code Playgroud)

Has*_*edi 5

如果您的控制器返回一个集合,您需要在 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
Run Code Online (Sandbox Code Playgroud)

您还可以查看文档以获取更多创建自定义操作和控制器的示例