으로 덮어 씁니다. 데이터 폼을 관리하기위한 새로운 전략을 사용했습니다.Symfony 프로젝트에서 Doctrine_Record validate 메소드를 Doctrine_Template
Symfony Form 객체를 사용하고 싶지 않지만 모델을 사용하여 모델을 만들고 싶습니다.
기본 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();
}
}
으로 시도했지만 교리는 원래의 validate() 함수를 사용합니다.
일부 Doctrine_Record 함수를 Doctrine_Template에 선언 된 새로운 메서드로 재정의하려고합니다.
이 문제에 대한 해결책을 제안 해 주시겠습니까?
Tnx!
Doctrine_Record_Listener에서 preValidate (Doctrine_Event $ event) 함수를 사용하여 validate() 메소드에 대한 해결책을 찾았지 만 다른 Doctrine_Record 함수를 대체 할 수는 없습니다 – Ephraim