我尝试加载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);
}
}
}
不要注入容器。
相反,直接注入IriConverter
。
public function __construct(ApiPlatform\Core\Bridge\Symfony\Routing\IriConverterInterface $iriConverter)
{
$this->iriConverter = $iriConverter;
}