我正在尝试让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()
方法。我清除缓存时仍然遇到问题。
我很确定我正在遵循正确的说明,那么可能会出现什么问题?
答案 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。