Symfony 4: я не могу подключиться автоматически в конструкторе пакетов

Мой контроллер PagesController расположен в vendor/dovstone/symfony-blog-admin/src/Controller содержит этот код:

<?php

//...

class PagesController extends Controller
{

private $em;

public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
dump($em) // return null;
}

// ...

Symfony бросает мне это: Type error: Too few arguments to function DovStone\Bundle\BlogAdminBundle\Controller\PagesController::__construct(), 0 passed in C:\Apps\Web\sf4\vendor\symfony\http-kernel\Controller\ControllerResolver.php on line 111 and exactly 1 expected,

Что я делаю неправильно?

1

Решение

В вашем локальном каталоге контроллеров autowiring / autoconfig включен конфигурацией Yaml.

В пакете вы должны явно указать свои зависимости в конфигурации. Это будет сделано путем чтения конфигурации из комплекта или конфигурации моста.

Каталог, который вы показываете, кажется, не является пакетом (у него нет имени, которое указывает на него — но у него все еще могут быть соответствующие файлы), поэтому, если это простой пакет (без структуры фреймворка Symfony для определения сервисов) ), вы хотели бы добавить еще один пакет, представляющий собой тонкий слой, делающий сервисы, из пакета обычного php, от которого он зависит.

1

Другие решения

Вот что я сделал:

<?php

//...

class PagesController extends Controller
{

protected $container;

private $em;

public function __construct(ContainerInterface $container, EntityManagerInterface $em)
{
$this->container = $container;

$this->em = $em;
dump($em); // EntityManagerInterface;
}

// ...

После этого мне пришлось очистить кеш, запустив php bin/console cache:clear

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector