【发布时间】:2019-07-02 16:54:44
【问题描述】:
我尝试用 Symfony 4.3 & Api Platform 做一个演示应用
我创建了一个名为 Event 的实体:
/**
* @ApiResource(
* itemOperations={
* "put"={"denormalization_context"={"groups"={"event:update"}}},
* "get"={
* "normalization_context"={"groups"={"event:read", "event:item:get"}}
* },
* "delete"
* },
* collectionOperations={"get", "post"},
* normalizationContext={"groups"={"event:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"event:write"}, "swagger_definition_name"="Write"},
* shortName="Event",
* attributes={
* "pagination_items_per_page"=10,
* "formats"={"jsonld", "json", "csv", "jsonhal"}
* }
* )
* @ORM\Entity(repositoryClass="App\Repository\EventRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Event
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"event:read", "event:item:get"})
*/
private $id;
...
public function getId(): ?int
{
return $this->id;
}
...
还有一个 EventItemDataProvider 类,我的目标是在将实体发送到响应之前做其他事情。
<?php
namespace App\DataProvider;
use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
use ApiPlatform\Core\Exception\ResourceClassNotSupportedException;
use App\Entity\Event;
final class EventItemDataProvider implements ItemDataProviderInterface, RestrictedDataProviderInterface
{
public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
{
return Event::class === $resourceClass;
}
public function getItem(string $resourceClass, $id, string $operationName = null, array $context = []): ?Event
{
// Retrieve the blog post item from somewhere then return it or null if not found
return new Event($id);
// return null;
}
}
当谈到 Event($id) 我有这个错误:
无法为 \"App\Entity\Event\" 类型的项目生成 IRI
你觉得我的代码有什么问题?
【问题讨论】:
标签: php symfony symfony4 api-platform.com