Php 如何在嵌入式表单中抛出错误';s后验证器(sfForm)

Php 如何在嵌入式表单中抛出错误';s后验证器(sfForm),php,symfony1,symfony-1.4,symfony-forms,Php,Symfony1,Symfony 1.4,Symfony Forms,对于Symfony 1.4的表单,如何在嵌入表单的后验证器中抛出SFValidator错误 我的父窗体调用以下命令: public function configure(){ $this->embedForm('page', $pageLinkForm); } 以及我的嵌入式表单: public function configure(){ $this->validatorSchema->setPostValidator(new sfValidatorCallb

对于Symfony 1.4的表单,如何在嵌入表单的后验证器中抛出SFValidator错误

我的父窗体调用以下命令:

public function configure(){
    $this->embedForm('page', $pageLinkForm);
}
以及我的嵌入式表单:

public function configure(){
    $this->validatorSchema->setPostValidator(new sfValidatorCallback(array(
        'callback' => array($this, 'validateLink')
    )));
}

public function validateLink($validator, $values) {
    if (!empty($values['link']) && !empty($values['outside_link']))
        throw new sfValidatorError($validator, 'Only specify either an internal link or an external link, but not both.');

}
post验证器运行validateLink,它抛出sfValidatorError,但它不会显示为全局错误,形式为isValid(),但不应该显示为全局错误


为什么会忽略错误?如何使其不被忽略?

在sf1.1中,我是这样做的:

 public function bind(array $taintedValues = null, array $taintedFiles = null)
 {
   sfLoader::loadHelpers(array('I18N'));
   parent::bind($taintedValues, $taintedFiles);
   if($taintedValues["password"])
   {
     if(!$taintedValues["pwd_verify"])
     {
       $this->getErrorSchema()->addError(new sfValidatorError(new sfValidatorSchema(), __('Please reenter the new password.')), 'password');
     }
   }
 }

我希望这对你有帮助。

我觉得扔一个类似这样的错误比较好:

$error =  new sfValidatorError($validator, 'invalid', array('value' => $field_name));
throw new sfValidatorErrorSchema($validator, array($field_name => $error));
如果要在嵌入表单中抛出错误,只需嵌入sfValidatorSchemaError:

//define container
$errorSchema =  new sfValidatorErrorSchema($validator);

//embedded field error
$error =  new sfValidatorError($validator, 'invalid', array('value' => $field_name));
$errorSchema->addError($error, $field_name);

//associate $errorSchema to your embedded field
throw new sfValidatorErrorSchema($validator, array('page' => $errorSchema));
尝试删除此文件的bug:(如果可以,请使用XDebug进行分步调试,否则使用var_dump()),以检查:-在嵌入表单后期验证期间,在第194行捕获了错误sfValidatorError-在第199行抛出了结果errorSchema-在父表单的第159行再次捕获该错误,请发布var_dump())父窗体的验证器架构的