Если вы не видели подобных сообщений в CLI symfony - вы счастливчик. Если да - рассмотрим workaround для борьбы с подобными капризами.
Если вы читаете это, скорее всего у вас вылетела ошибка при попытке выполнить эту команду (либо подобную ей):
Непродолжительное гугление показало, что, во-первых, панацеи нет, во-вторых - ноги растут из использования sfContext::getInstance() в классах модели. Для решения проблемы можно применить следующий workaround:
Если вы читаете это, скорее всего у вас вылетела ошибка при попытке выполнить эту команду (либо подобную ей):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
./symfony doctrine:data-dump |
Непродолжительное гугление показало, что, во-первых, панацеи нет, во-вторых - ноги растут из использования sfContext::getInstance() в классах модели. Для решения проблемы можно применить следующий workaround:
- Для того, чтобы понять где именно обваливается task, запустим команду с волшебным ключиком --trace:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters./symfony doctrine:data-dump --trace
После кучи дампов запросов мы увидим уже намозолившую глаза ошибку, а далее trace:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersException trace: at /var/www/project/lib/vendor/diem/symfony/lib/util/sfContext.class.php:111 sfContext::getInstance at /var/www/project/lib/model/doctrine/PaymentSystem.class.php:36 PaymentSystem->getUrl at /var/www/project/lib/vendor/diem/dmCorePlugin/lib/doctrine/record/dmDoctrineRecord.php:612 dmDoctrineRecord->get at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Record.php:1908 Doctrine_Record->toArray at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Export.php:165 Doctrine_Data_Export->prepareData at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Export.php:101 Doctrine_Data_Export->doExport at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data.php:203 Doctrine_Data->exportData at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php:991 Doctrine_Core::dumpData at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/DumpData.php:55 Doctrine_Task_DumpData->execute at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli.php:516 Doctrine_Cli->executeTask at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli.php:498 Doctrine_Cli->_run at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli.php:452 Doctrine_Cli->run at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBaseTask.class.php:64 sfDoctrineBaseTask->callDoctrineCli at /var/www/project/lib/vendor/diem/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataDumpTask.class.php:89 sfDoctrineDataDumpTask->execute at /var/www/project/lib/vendor/diem/symfony/lib/task/sfBaseTask.class.php:68 sfBaseTask->doRun at /var/www/project/lib/vendor/diem/symfony/lib/task/sfTask.class.php:97 sfTask->runFromCLI at /var/www/project/lib/vendor/diem/symfony/lib/command/sfSymfonyCommandApplication.class.php:76 sfSymfonyCommandApplication->run at /var/www/project/lib/vendor/diem/symfony/lib/command/cli.php:20 include at /var/www/project/symfony:14
- Теперь дело за малым - пойти в метод PaymentSystem->getUrl(), и провести небольшой рефакторинг. Цель - убрать оттуда вызов sfContext::getInstance(), или, если это невозможно, поместить его внутрь условия:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters<?php if (sfContext::hasInstance()) { sfContext::getInstance(); }
- Так повторяем до тех пор, пока не увидим сообщение:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters>> doctrine Dumped data successfully to: /var/www/project/data/fixtures
Еще можно при вызове таска указать опцию application. В этом случае будет создан контекст для указанного приложения, и все заработает. Например
ОтветитьУдалить./symfony doctrine:data-load --application=frontend