Я искал часы, чтобы решить мою проблему, но теперь я просто не знаю, что проверить.
Я создал новый проект для композитора: https://github.com/Gcob/esvit-ng-table-for-symfony
Все хорошо, пока не дойдет до appKernel.php, я объявляю новый, недавно загруженный из комплекта композитора следующим образом: new Gcob\NgTableBundle\GcobNgTableBundle()
, но у меня появилось сообщение об ошибке:
ClassNotFoundException in AppKernel.php line 23:
Attempted to load class "GcobNgTableBundle" from namespace "Gcob\NgTableBundle".
Did you forget a "use" statement for another namespace?
Я не знаю, как appKernel находит свои пакеты, но я знаю, что пространство имен важно и имя файла тоже, поэтому мой файл GcobNgTableBundle.php
имеет пространство namespace Gcob\NgTableBundle;
пространства namespace Gcob\NgTableBundle;
и объявление класса является class GcobNgTableBundle extends Bundle
как и должно быть.
Есть ли место, где я должен указать ядру, что файл GcobNgTableBundle.php
существует для пакетов поставщиков? Если кто-то получил какую-либо идею, скажите, пожалуйста, но не забывайте, что я пробовал много вещей (первый раз задавал вопрос o_O)
После много потерянного времени я понял: P Ответ мим был в хорошем направлении! Я узнал здесь, как работает пространство имен композиторов. AppKernel в Symfony загружает только файл-композитор "vendor/composer/autoload_namespaces.php"
для загрузки пространств имен FAKE xD.
Вам нужно сменить композитор и добавить часть автозагрузки. Без него пространства имен могут терпеть неудачу. Проверьте документацию. Он должен быть похож на это:
"autoload": {
"psr-4": { "Symfony\\Bundle\\EsvitNgTableBundle\\": "" }
},
Проверьте это, например.