Исключая Data Fixtures для загрузки композитором в приложение Symfony 3.4 - PullRequest
0 голосов
/ 22 ноября 2018

Я использую doctrine/data-fixtures в средах разработки и требую его следующим образом:

composer.json:

"autoload": {
    "psr-0": {
        "": "src/",
        "SymfonyStandard": "app/"
    },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
"require-dev": {
    "symfony/maker-bundle": "^1.8",
    "phpunit/phpunit": "^7.0",
    "doctrine/data-fixtures": "dev-rfc1872 as v1.2.1",
    "doctrine/doctrine-fixtures-bundle": "^3.0"
},

В моем приложении Symfony 3.4 мои данные хранятся в /src/AppBundle/DataFixtures/ORM/*.php.

Когда я запускаю composer, который, в свою очередь, запускает кэш Symfony: clear Я получаю следующую ошибку:

[RuntimeException]
Произошла ошибка при выполнении ""cache: clear --no-warmup '"команда:
В строке DefinitionErrorExceptionPass.php 37:

While discovering services from namespace "AppBundle\", an error was thrown    
 when processing the class "AppBundle\DataFixtures\ORM\LoadCourseData": "Cl    
ass Doctrine\Common\DataFixtures\AbstractFixture not found".

Я хотел бы исключить пространство имен DataFixtures из автозагрузки, но не могу найтиспособ сделать это.

1 Ответ

0 голосов
/ 22 ноября 2018

Я думаю, вы не хотите исключать фиксации данных из автозагрузки, потому что они являются действительными классами PHP.

Эта ошибка происходит из-за функции автопроводки Symfony.Поэтому я предполагаю, что вы действительно используете автопроводВам следует зафиксировать данные из автоматического обнаружения проводки, что можно сделать в services.yml с опцией exclude.

Если у вас есть что-то вроде (которое должно быть там по умолчанию):

AppBundle\:
    resource: '../../src/AppBundle/*'
    exclude: '../../src/AppBundle/{Entity,Repository}'

Все, что вам нужно сделать, это добавить DataFixtures пространство имен к exclude:

AppBundle\:
    resource: '../../src/AppBundle/*'
    exclude: '../../src/AppBundle/{Entity,Repository,DataFixtures}'

Подробнее об этом можно прочитать в здесь nad здесь

...