Я создал пользовательский поставщик данных и соответствующий объект. Я добавил фиктивные данные на данный момент, так как они не работают. Ресурс доступен в документах, и операция выполняется, но конечная точка всегда возвращается без данных. Моя сущность здесь
<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;
/**
* @ApiResource(
* collectionOperations={"get"},
* itemOperations={"get"}
* )
*/
class Region
{
/**
* @ApiProperty(identifier=true)
*/
private $id;
private $name;
public function __construct(int $id, string $name)
{
$this->id = $id;
$this->name = $name;
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
}
, а провайдер данных -
<?php
namespace App\DataProvider;
use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface;
use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
use App\Entity\Region;
use Doctrine\ORM\EntityManagerInterface;
class RegionDataProvider implements CollectionDataProviderInterface,
RestrictedDataProviderInterface
{
/**
* @param string $resourceClass
* @param string|null $operationName
*
* @return \Traversable
*/
public function getCollection(string $resourceClass, string $operationName = null):
\Traversable
{
yield new Region(1, 'Region 1');
yield new Region(2, 'Region 2');
yield new Region(3, 'Region 3');
yield new Region(4, 'Region 4');
}
/**
* @param string $resourceClass
* @param string|null $operationName
* @param array $context
*
* @return bool
*/
public function supports(string $resourceClass, string $operationName = null, array
$context = []): bool
{
return (Region::class === $resourceClass) && ('GET' === $operationName);
}
}
Я пробовал все способы использования службы провайдера данных, с автоматической или явной настройкой. Конечная точка работает, но никогда не возвращает никаких данных