Не получается сделать инъекцию через метод в Symfony 3.2, как правильно?

В Symfony 3.2, инъекцию зависимостей можно делать несколькими способами. Один из наиболее популярных способов - это использование автозависимостей при создании контроллеров.

Для начала, вам необходимо убедиться, что ваш контроллер наследуется от базового контроллера Symfony - SymfonyBundleFrameworkBundleControllerController. Это гарантирует наличие метода get() для доступа к сервисам, зарегистрированным в контейнере зависимостей.

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

Предположим, что у вас есть сервис MyService, который нужно внедрить в контроллер. Вы можете написать в контроллере конструктор, который ожидает этот сервис:

use AppBundleServiceMyService;

class DefaultController extends Controller
{
    private $myService;

    public function __construct(MyService $myService)
    {
        $this->myService = $myService;
    }

    // ...
}

Если вы хотите, чтобы Symfony сам внедрил зависимость, вам потребуется пометить ваш сервис или класс, который создает ваш контроллер, аннотацией @SymfonyComponentDependencyInjectionContainerAwareInterface. Это позволяет Symfony использовать метод setContainer() для установки экземпляра контейнера перед выполнением методов контроллера:

use SymfonyComponentDependencyInjectionContainerAwareInterface;
use SymfonyComponentDependencyInjectionContainerInterface;
use AppBundleServiceMyService;

class DefaultController extends Controller implements ContainerAwareInterface
{
    private $myService;

    public function setContainer(ContainerInterface $container = null)
    {
        parent::setContainer($container);
        $this->myService = $container->get('my_service');
    }

    // ...
}

В этом случае, вам также необходимо привести сервис к локальной переменной, чтобы иметь к нему доступ в других методах контроллера.

Наконец, у вас также должна быть конфигурация сервиса MyService в файле services.yml, чтобы Symfony знал, как создавать экземпляр этого сервиса:

services:
    my_service:
        class: AppBundleServiceMyService

Обратите внимание, что вам также необходимо убедиться, что сервис AppBundleServiceMyService зарегистрирован в вашем контейнере зависимостей.

После выполнения этих шагов, в вашем контроллере у вас будет доступным экземпляр сервиса MyService, который будет автоматически внедрен в контроллер при создании. Вы можете использовать его в любом методе контроллера, где это необходимо.