Не удается получить IriConverter из контейнера, поскольку он не является общедоступным - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь загрузить api_platform.iri_converter, но получаю сообщение об ошибке:

Служба или псевдоним \ "api_platform.iri_converter \" были удалены или встроены при компиляции контейнера. Вы должны либо сделать его опубликованным c, либо прекратить использование контейнера напрямую и использовать вместо него внедрение зависимостей.

Это код:

declare(strict_types=1);

namespace App\Security\Authorization\Voter;

use Symfony\Component\DependencyInjection\ContainerInterface;

abstract class BaseVoter extends Voter
{
    public ContainerInterface $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }
}
declare(strict_types=1);

namespace App\Security\Authorization\Voter;

class VenueVoter extends BaseVoter
{
    protected function voteOnAttribute(): bool
    {
        /** @var User $tokenUser */
        $tokenUser = $token->getUser();

        if (self::VENUE_CREATE === $attribute) {
            $iri = $this->container->get('api_platform.iri_converter')->getItemFromIri($valueWithIri);
        }
    }
}

1 Ответ

1 голос
/ 05 марта 2020

Не вводите контейнер.

Вместо этого введите IriConverter напрямую.

use ApiPlatform\Core\Bridge\Symfony\Routing\IriConverterInterface;

abstract class BaseVoter extends Voter
{
    public IriConverterInterface $iriConverter;

    public function __construct(IriConverterInterface $iriConverter)
    {
        $this->iriConverter = $iriConverter;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...