Загрузка данных Propel - контекст по умолчанию не существует - PullRequest
2 голосов
/ 20 июля 2011

В настоящее время я застрял на ошибке The "default" context does not exist. при попытке построить мою модель данных с помощью команды symfony propel:build --application=frontend --all --and-load --no-confirmation

После большого количества поисков в Google появляется эта ошибка вызвана использованием sfContext внутри модели илиформа, поэтому я нашел их и прокомментировал их (см. ниже), ошибка все еще происходит, кто-нибудь еще знает исправление?

>> file-     /var/www/html/dev/meeting/config/generated-sfGuardPlugin-schema.xml
>> file-     /var/www/html/dev/meeting/config/generated-schema.xml
>> propel    load data from "/var/www/html/dev/meeting/data/fixtures"
>> propel    load data from "/var/www/html/dev/meeting/plugins/sfGuardPlugin/data/fixtures"

  The "default" context does not exist. 

grep -R sfContext lib/model/*
lib/model/MeetingMeetings.php:    return "";//sfContext::getInstance()->getController()->genUrl('meeting/show?id='.$this->getId(), $full);
lib/model/sfGuardUserProfile.php:    //if(!is_null(sfContext::getInstance())&&($useYou||$useYourself)&&$this->getUserId()==sfContext::getInstance()->getUser()->getId()) {

grep -R sfContext lib/form/*
lib/form/MeetingMeetingsForm.class.php:      //sfContext::getInstance()->getUser()->setFlash("info",

Большое спасибо за ваше время,


Не знаете, какую информацию я могу предоставить, у кого-нибудь есть еще вопросы?

Ответы [ 3 ]

1 голос
/ 14 января 2012

Просто столкнулся с этим сегодня с загрузкой данных. Вместо того, чтобы изменять сигнатуру функции, вот что я сделал.

if(!sfContext::hasInstance())
  $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'cache', true);
else
  $configuration = sfContext::getInstance()->getConfiguration();

И тогда я могу запускать подобные вещи в своих классах моделей.

$configuration->loadHelpers('Texturizer');

Я не уверен, что параметр 'cache' делает в getApplicationConfiguration, но я нашел эту строку в книге Jobeet здесь http://www.symfony -project.org / jobeet / 1_4 / Propel / en / 21

1 голос
/ 26 июля 2012

Чтобы быстро решить проблему, прокомментируйте код / lib / form / baseForm.class.php , сгенерируйте модуль и восстановите код

1 голос
/ 21 июля 2011

Я решил эту проблему, выполнив следующие действия.

Сначала найдите все ссылки на sfContext в файлах модели и найдите альтернативный способ получить то, для чего когда-либо был необходим sfContext (например, передать его методу).

Проверьте все библиотечные файлы, упомянутые в любых моделях, для использования sfContext, повторите вышеуказанное решение.

Используйте проверки is_null для sfContexts, где он должен существовать, поэтому он работает только в случае необходимости.

Проблема в моем случае заключалась в том, что мой метод сохранения использовал другую библиотеку, которая использовала sfContext для получения текущего пользователя, которого, очевидно, не существует при вставке данных в модель

...