Symfony: класс XYZ не найден в пространствах имен, сконфигурированных для цепочки - PullRequest
0 голосов
/ 12 марта 2019

Существующие вопросы не помогли. Я все еще изучаю Symfony и создаю существующий проект. Пытаюсь запустить доктрину из моего каталога приложений.

./app/console doctrine:fixtures:load --env test

И выполнение этого дает мне следующие ошибки

Ошибка при выполнении команды "doctrine: fixtures: load --env test --em default". Сообщение: «Класс ClientPortal \ GenericBundle \ Document \ Accountant» не найден в настроенных пространствах имен цепочек _XyzProjectName \ CalendarContext \ Domain \ Model, интеграция \ GetFeedbackBundle \ Model, _XyzProjectName \ AccountingProcessContext \ Domain \ Model, _XyzProjectName \ Case {"исключение": "[объект] (Doctrine \ Common \ Persistence \ Mapping \ MappingException (код: 0): класс 'ClientPortal \ GenericBundle \ Document \ Accountant' не найден в настроенных пространствах имен _XyzProjectName \ CalendarContext \ Domain \ Модель, интеграция \ GetFeedbackBundle \ Model, _XyzProjectName \ AccountingProcessContext \ Domain \ Model, _XyzProjectName \ CaseContext \ Домен в / usr / local / var / www / 1800-api / vendor / doctrine / persistence / lib / Doctrine / Common / Persistence / Mapping /MappingException.php:22)

И это исключение выдается при попытке сохранить объект класса

ClientPortal \ GenericBundle \ Документ \ Бухгалтер '

и вот мое учение в config.yml

doctrine:
dbal:
    driver:   pdo_pgsql
    host:     '%database_host%'
    dbname:   '%database_name%'
    user:     '%database_user%'
    password: '%database_password%'
orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    auto_mapping: true
    mappings:
        CalendarBundle:
            prefix: '_XyzProjectName\CalendarContext\Domain\Model'
        IntegrationGetFeedbackBundle:
            prefix: 'Integration\GetFeedbackBundle\Model'
        AccountingProcessBundle:
            prefix: '_XyzProjectName\AccountingProcessContext\Domain\Model'
        CaseBundle:
            prefix: '_XyzProjectName\CaseContext\Domain'
        GenericBundle:
            type: "annotation"   
            prefix: 'ClientPortal\GenericBundle\Document'
            dir: 'src'
            is_bundle: false

Фрагмент, который вызывает это исключение

    $account = new ClientPortal\GenericBundle\Document\Accountant();//full namespace added for clarity - also this file lies in the same directory structure. 
    $account->setSfAccountantId($accountantId);
    $account->setUsername($username);
    $manager = new ObjectManager;
    $manager->persist( $account ); //This throws the above mentioned exception

Я думаю, что файл ClientPortal \ GenericBundle \ Document \ Accountant.php загружается автоматически, поскольку во время создания его объекта не возникает исключение. Но в конфигурации или сопоставлении чего-то не хватает, из-за чего доктрина не знает, как сохранить объект.

[Исходный код] [1] Класс бухгалтера

GenericBundle (s), зарегистрированный в AppKernel

new Website\GenericBundle\WebsiteGenericBundle(),
new Admin\GenericBundle\AdminGenericBundle(),
new ClientPortal\GenericBundle\ClientPortalGenericBundle(),
new TaxApp\GenericBundle\TaxAppGenericBundle(),

1 Ответ

1 голос
/ 13 марта 2019

Итак, как я предлагал в комментариях, попробуйте добавить ClientPortal\GenericBundle\Document\ пространство имен к сопоставлениям в вашем файле конфигурации доктрины, вот так:

#...
orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    mappings:
        # ...
        ClientPortalGenericBundle:
            type: annotation
            prefix: 'ClientPortal\GenericBundle\Document\'
            dir: '%kernel.root_dir%/src/ClientPortal/GenericBundle/Document/'
            #is_bundle: false
    auto_mapping: true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...