在我的 Symfony 项目中,我将使用一种新策略来管理数据表单。
我不想使用 Symfony Form 对象,但我想使用模型来构建它们。
我不想重新声明 Base Doctrine_Record 类,所以我写了一个新的 Doctrine_Template:ExtendedModel。
在 ExtendeModel 模板中,我有新的对象和方法,但我需要重写 Doctrine_Record 的 validate() 函数。
我试过了
class ExtendedModel extends Doctrine_Template {
[...]
public $validatorSchema;
public function setValidatorSchema(sfValidatorSchema $validatorSchema) {
$this->validatorSchema = $validatorSchema;
}
public function getValidatorSchema() {
return $this->validatorSchema;
}
public function validate() {
$this->getInvoker()->setup();
$errorStack = $this->getInvoker()->getErrorStack();
if ($this->getValidatorSchema()) {
try {
$this->getValidatorSchema()->addOption('allow_extra_fields', true);
$this->getValidatorSchema()->clean($this->getInvoker()->toArray(false));
} catch (sfValidatorErrorSchema $errorSchema) {
$errorStack = $this->getInvoker()->getErrorStack();
foreach ($errorSchema->getErrors() as $key => $error) {
/* @var $error sfValidatorError */
$errorStack->add($key, $error->getMessage());
}
}
}
$this->getInvoker()->validate();
}
}
但是 Doctrine 使用原始的 validate() 函数。
我想用在我的 Doctrine_Template 中声明的新方法来覆盖一些 Doctrine_Record 函数。
你能建议我解决这个问题吗?
天呐!