Symfony Аргумент n, передаваемый ***, должен быть экземпляром Swift_Mailer, значение null

Я борюсь с Symfony 3.4 и автопроводкой.

Вот пример сообщения об ошибке: Argument 2 passed to App\Controller\MainController::contact() must be an instance of Swift_Mailer, null given

Это одно и то же сообщение для каждой Service, которую я передаю в качестве аргумента.

Возможно, в настройках чего-то не хватает, но я не могу понять, что...

Любая подсказка?

// config/services.yaml
parameters:
    google_recaptcha_site_key: '%env(GOOGLE_RECAPTCHA_SITE_KEY)%'

services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

  App\:
    resource: '../src/*'
    exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

  App\Controller\:
    resource: '../src/Controller'
    public: true
    tags: ['controller.service_arguments']

// src/Controller/MainController.php
namespace App\Controller;

use Exception;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Validator\Validation;

class MainController extends AbstractController
{
 public function contact(
        Request $request,
        \Swift_Mailer $mailer,
        Validation $validation,
    ) { ... }
}

person Charly    schedule 16.02.2019    source источник
comment
Было бы неплохо добавить код конструктора вашего контроллера вместе с операторами use   -  person Flying    schedule 16.02.2019
comment
Также полезно использовать встроенный в Symfony контейнерный отладчик: php -f bin/console debug:container debug:container <service name>, возможно, он даст вам подсказку   -  person Flying    schedule 16.02.2019
comment
Опубликуйте конфигурацию вашего сервиса и вашего контроллера   -  person 113408    schedule 16.02.2019
comment
Как включить Swift_Mailer в проект? Напрямую, как swiftmailer/swiftmailer или как пакет Symfony symfony/swiftmailer-bundle?   -  person Flying    schedule 16.02.2019
comment
через symfony/swiftmailer-bundle   -  person Charly    schedule 16.02.2019
comment
Тогда это выглядит довольно странно, вы пытались посмотреть вывод команды debug:container для \Swift_Mailer или mailer?   -  person Flying    schedule 16.02.2019
comment
отладка: контейнер | почтовая программа grep Swift_Mailer alias for "swiftmailer.mailer.default" ...   -  person Charly    schedule 16.02.2019
comment
Понятия не имею, правда ли это, но я бы порекомендовал: 1. попробовать передать почтовик в конструктор, чтобы посмотреть, будет ли разница; 2. загляните внутрь самого контейнера, чтобы увидеть, как создается экземпляр контроллера, он находится в getMainControllerService.php. Надеюсь, это даст подсказку, чтобы решить проблему   -  person Flying    schedule 16.02.2019
comment
Спасибо @Flying за вашу помощь, я закончил создавать новое приложение с нуля и сравнивать поведение, добавляя пакеты один за другим. CF мой ответ ниже.   -  person Charly    schedule 17.02.2019


Ответы (1)


Мне удалось решить свою проблему.

У меня был включен Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle, и кажется, что у нас не может быть sensio/framework-extra-bundle и symfony/flex. strong> (или, возможно, с дополнительной настройкой).

person Charly    schedule 17.02.2019