Как автоматически сгенерировать пакет в Symfony3?

Я попытался автоматически сгенерировать пакет в Symfony3, используя инструкции на официальном сайте: https://symfony.com/doc/current/bundles.html, но не удалось.

Я создал каталог \src\TestBundle в своем проекте с файлом TestBundle.php в нем. Я расширил свой класс TestBundle из Bundle и добавил строку use Symfony\Component\HttpKernel\Bundle\Bundle; перед объявлением класса.

Я добавил имя своего нового пакета в список пакетов в AppKernel.php.

Наконец, когда я выполняю $ php bin/console generate:bundle --namespace=TestBundle, я получаю эту ошибку:

Неустранимая ошибка PHP: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: попытка загрузить класс TestBundle из пространства имен TestBundle.

Любые идеи, почему это происходит?


person Ivan Zavadsky    schedule 02.08.2017    source источник


Ответы (1)


Если вы запустите эту команду:

php bin/console generate:bundle --namespace=TestBundle

Symfony создаст пакет для вас, вам не нужно создавать файл и добавлять его в файл AppKernel.

Попробуйте удалить все ваши файлы и ссылки на TestBundle, и после запуска только команды Symfony создаст и зарегистрирует для вас Bundle.

Вместо этого вы хотите создать вручную этот файл, вам нужно создать каталог \src\TestBundle и внутри него файл TestBundle.php. После этого вам нужно зарегистрировать его в своем AppKernel. После того, как вам нужно указать композитору загрузить этот пакет, если это еще не сделано, используйте эту конфигурацию для autoload внутри composer.json

"autoload": {
    "psr-4": {
        "": "src/"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},

И, наконец, запустите команду в вашей консоли:

composer dump-autoload
person Alessandro Minoccheri    schedule 02.08.2017