Невозможно изменить параметры построителя модели

Я пытаюсь заставить symfony использовать собственный класс jsDoctrineRecord вместо sfDoctrineRecord для своих моделей. Вот код для переопределяющего класса:

 <?php abstract class jsDoctrineRecord extends sfDoctrineRecord { public function foo() { echo 'foo';exit; } } 

Вот что я имею в config/ProjectConfiguration.class.php , в соответствии с инструкциями здесь :

 <?php require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php'; sfCoreAutoload::register(); class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins('sfDoctrinePlugin'); $this->enablePlugins('sfDoctrineGuardPlugin'); $this->enablePlugins('jsDoctrineSchemaOverriderPlugin'); } public function configureDoctrine(Doctrine_Manager $manager) { $options = array('baseClassName' => 'jsDoctrineRecord'); sfConfig::set('doctrine_model_builder_options', $options); } } 

К сожалению, это не работает. Мои модели продолжают наследовать от sfDoctrineRecord вместо jsDoctrineRecord . Метод foo() не распознается. У меня все еще проблема, когда я очищаю свой кеш.

Я почти уверен, что правильно следую инструкциям, так что может быть не так?

Solutions Collecting From Web of "Невозможно изменить параметры построителя модели"

Вам необходимо перестроить модель, чтобы классы базовой записи расширили ваш новый класс записи. Запуск доктрины: build-model.

Я не уверен, что он не работает, поскольку он все еще существует для BC, но, посмотрев на sfDoctrinePlugin, похоже, что правильный способ справиться с этим – это прослушиватель событий symfony (см. Строки 83 – 89 из SF_LIB_DIR/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php ):

в projectConfiguration:

 public function setup() { $this->enablePlugins('sfDoctrinePlugin'); $this->enablePlugins('sfDoctrineGuardPlugin'); $this->enablePlugins('jsDoctrineSchemaOverriderPlugin'); $this->dispatcher->connect( 'doctrine.filter_model_builder_options', array($this, 'configureDoctrineBuildOptions') ); } public function configureDoctrineBuildOptions(sfEvent $event, $options) { $options['baseClassName'] = 'jsDoctrineRecord'; return $options; } 

Дайте ему выстрел и посмотрите, не изменилось ли это.