Пользовательский поставщик данных платформы API не найден - PullRequest
1 голос
/ 16 октября 2019

Я создал пользовательский поставщик данных и соответствующий объект. Я добавил фиктивные данные на данный момент, так как они не работают. Ресурс доступен в документах, и операция выполняется, но конечная точка всегда возвращается без данных. Моя сущность здесь

<?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);
    }
}

Я пробовал все способы использования службы провайдера данных, с автоматической или явной настройкой. Конечная точка работает, но никогда не возвращает никаких данных

1 Ответ

1 голос
/ 16 октября 2019

Просто измените

('GET' === $operationName)

на

('get' === $operationName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...