【问题标题】:display a symfony post-validation error in an embeded Form在嵌入式表单中显示 symfony 验证后错误
【发布时间】:2011-06-15 18:00:55
【问题描述】:

我有一个包含 embededForms 的表单。

后验证器:

$this->validatorSchema->setPostValidator(
  new sfValidatorCallback(
    array('callback' => array($this, 'myPostValidator'))
  )
);

我在 myPostValidator 方法中抛出错误:

$error = new sfValidatorError($validator, 'invalid ' . $values['embededform1']['field']);
throw new sfValidatorErrorSchema($validator, array('field' => $error));

现在我得到一个根表单的全局错误。

我想在正确的字段旁边显示错误。

$values['embededform1']['field']

【问题讨论】:

标签: forms symfony1 validation customvalidator


【解决方案1】:

我的第一个建议是在嵌入式表单中添加帖子验证器。嵌入时会将验证器复制到容器表单中,并且您的引发异常的代码应该可以按预期工作。

或者,您可以在容器表单的回调中尝试以下操作:

$error = new sfValidatorError($validator, 'invalid');
$errorschema = new sfValidatorErrorSchema($validator, array('field' => $error));
throw new sfValidatorErrorSchema($validator, array('embeddedformname' => $errorschema));

【讨论】:

  • 不幸的是,在验证容器表单时,嵌入表单中的后验证器不会运行。
  • 这不是真的,它们在嵌入到容器表单时被复制,整个验证器模式也是如此。
【解决方案2】:
$error = new sfValidatorError($validator, 'invalid');
$errorschema = new sfValidatorErrorSchema($validator, array('field' => $error));
throw new sfValidatorErrorSchema($validator, array('embeddedformname' => $errorschema));

这对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多