Symfony4.2 Пакетные услуги Autowire - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу автоматически связать интерфейс сервиса пакета в моих собственных сервисах, но я получаю ошибку:

Cannot resolve argument $slackOauthService of "App\Controller\Panel\Slack\SigninController::afterOauth()": Cannot autowire service "App\Service\Slack\SlackOauthService": argument "$httpClient" of method "__construct()" references interface "GuzzleHttp\ClientInterface" but no such service exists. Did you create a class that implements this interface?

Мой код:

public function __construct( ClientInterface $httpClient, EntityManagerInterface $em ) {
        $this->httpClient = $httpClient;
        $this->em         = $em;
    }

Если я внедряю только менеджер сущностей или определенный мной сервис, все работает нормально, но какой бы пакетный сервис я ни внедрял (guzzle, browserkit, jms serializer и т. Д.), Он не работает.

У меня есть файл symfony services.yaml по умолчанию, определенный для веб-проектов:

services:
# default configuration for services in *this* file
_defaults:
    autowire: true      # Automatically injects dependencies in your services.
    autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

# makes classes in src/ available to be used as services
# this creates a service per class whose id is the fully-qualified class name
App\:
    resource: '../src/*'
    exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

# controllers are imported separately to make sure services can be injected
# as action arguments even if you don't extend any base controller class
App\Controller\:
    resource: '../src/Controller'
    tags: ['controller.service_arguments']

Я использую Symfony4.2.

Каково решение этой проблемы?

1 Ответ

1 голос
/ 23 апреля 2019

Я играл с этим некоторое время назад. Вы импортировали пакет GuzzleHttp? Если это так, может быть, это поможет вам:

use GuzzleHttp\Client;

public function __construct()
{
   $this->http_client = new Client();
}
...