понедельник, 19 декабря 2011 г.

The "default" context does not exist и symfony doctrine:data-dump

Если вы не видели подобных сообщений в CLI symfony - вы счастливчик. Если да - рассмотрим workaround для борьбы с подобными капризами.

Если вы читаете это, скорее всего у вас вылетела ошибка при попытке выполнить эту команду (либо подобную ей):


Непродолжительное гугление показало, что, во-первых, панацеи нет, во-вторых - ноги растут из использования sfContext::getInstance() в классах модели. Для решения проблемы можно применить следующий workaround:
  1. Для того, чтобы понять где именно обваливается task, запустим команду с волшебным ключиком --trace:


    После кучи дампов запросов мы увидим уже намозолившую глаза ошибку, а далее trace:


  2. Теперь дело за малым - пойти в метод PaymentSystem->getUrl(), и провести небольшой рефакторинг. Цель - убрать оттуда вызов sfContext::getInstance(), или, если это невозможно, поместить его внутрь условия:


  3. Так повторяем до тех пор, пока не увидим сообщение:


Читать дальше......