无法更改模型构建器选项

时间:2010-12-08 21:47:01

标签: php symfony1 doctrine

我正在尝试让symfony为其模型使用名为jsDoctrineRecord的自定义类而不是sfDoctrineRecord。这是覆盖类的代码:

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

根据说明here

,这是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()方法。我清除缓存时仍然遇到问题。

我很确定我正在遵循正确的说明,那么可能会出现什么问题?

2 个答案:

答案 0 :(得分:4)

我不确定那些不能用于它的BC仍然存在,但是在查看sfDoctrinePlugin之后,看起来处理这个的正确方法是使用symfony event listener(参见{{1}的第83-89行}}):

projectConfiguration中的

SF_LIB_DIR/plugins/sfDoctrinePlugin/config/sfDoctrinePluginConfiguration.class.php

给出一个镜头,看看它是否有所作为。

答案 1 :(得分:3)

您需要重建模型,以便Base记录类扩展您的新记录类。运行doctrine:build-model。