Мой контроллер 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
,
Что я делаю неправильно?
В вашем локальном каталоге контроллеров autowiring / autoconfig включен конфигурацией Yaml.
В пакете вы должны явно указать свои зависимости в конфигурации. Это будет сделано путем чтения конфигурации из комплекта или конфигурации моста.
Каталог, который вы показываете, кажется, не является пакетом (у него нет имени, которое указывает на него — но у него все еще могут быть соответствующие файлы), поэтому, если это простой пакет (без структуры фреймворка Symfony для определения сервисов) ), вы хотели бы добавить еще один пакет, представляющий собой тонкий слой, делающий сервисы, из пакета обычного php, от которого он зависит.
Вот что я сделал:
<?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