Не удается получить IriConverter из контейнера, потому что он не общедоступен
Я пытаюсь загрузить api_platform.iri_converter
но получаю ошибку:
Служба или псевдоним \"api_platform.iri_converter\" были удалены или встроены, когда контейнер был скомпилирован. Вы должны либо сделать его общедоступным, либо прекратить использование контейнера напрямую и вместо этого использовать внедрение зависимостей.
Это код:
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 ответ
Решение
Не вводите контейнер.
Вместо этого введите IriConverter
прямо.
use ApiPlatform\Core\Bridge\Symfony\Routing\IriConverterInterface;
abstract class BaseVoter extends Voter
{
public IriConverterInterface $iriConverter;
public function __construct(IriConverterInterface $iriConverter)
{
$this->iriConverter = $iriConverter;
}
}