Php Can';不要更改模型生成器选项

Php Can';不要更改模型生成器选项,php,symfony1,doctrine,Php,Symfony1,Doctrine,我试图让symfony为其模型使用名为jsDoctrineRecord的自定义类,而不是sfDoctrineRecord。下面是重写类的代码: <?php abstract class jsDoctrineRecord extends sfDoctrineRecord { public function foo() { echo 'foo';exit; } } 不幸的是,这不起作用。我的模型继续继承自sfDoctrineRecord,而不是jsDoctrineReco

我试图让symfony为其模型使用名为
jsDoctrineRecord
的自定义类,而不是
sfDoctrineRecord
。下面是重写类的代码:

<?php
abstract class jsDoctrineRecord extends sfDoctrineRecord
{
  public function foo()
  {
    echo 'foo';exit;
  }
}
不幸的是,这不起作用。我的模型继续继承自
sfDoctrineRecord
,而不是
jsDoctrineRecord
。无法识别
foo()
方法。我在清除缓存时仍然存在问题


我很确定我是按照正确的说明来做的,那么会出什么问题呢?

我不确定什么地方不起作用,因为它仍然适用于BC,但是在查看sfDoctrinePlugin之后,看起来处理这个问题的正确方法是使用(参见
SF_LIB_DIR/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php
的第83-89行):

在项目配置中:

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;
}

试一试,看看它是否有不同。

您需要重建模型,以便基本记录类扩展您的新记录类。运行条令:构建模型。

只是为了确保……您已经重建了模型,对吗?(条令:构建模型)不,我没有那样做。我只是那样做了,现在它工作了。谢谢!如果你想把它作为一个答案,我会接受它。谢谢你发布源位置。很有帮助!在这个上下文中“BC”是什么?@Phoneix:BC=向后兼容性。
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;
}