Как да генерирам автоматично пакет в 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 ще създаде и регистрира пакета вместо вас.

Вместо това искате да създадете ръчно този файл, който трябва да създадете директорията \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