在 Symfony 中为 sfValidatorOr 添加错误

发布于 2024-11-19 20:46:21 字数 1572 浏览 0 评论 0原文

我有:

$this->validatorSchema->setPostValidator(new sfValidatorOr(
  array(
    new sfValidatorSchemaCompare('email', '!=', ''),
    new sfValidatorSchemaCompare('phone', '!=', ''),
  ),
  array(),
  array('invalid' => 'Campo obligatorio')
));

错误在 $form->getGlobalErrors() 中。我如何添加

array('throw_global_error' => true),

与此处相同:

$this->validatorSchema->setPostValidator(
  new sfValidatorOr(
    array(
      new sfValidatorAnd( 
        array(
          new sfValidatorSchemaCompare('date_from', sfValidatorSchemaCompare::EQUAL, 'date_to',
            array('throw_global_error' => true),
            array('invalid' => 'The start date ("%left_field%") must be equal the end date ("%right_field%")')),
          new sfValidatorSchemaCompare('time_from', sfValidatorSchemaCompare::LESS_THAN, 'time_to',
            array('throw_global_error' => true),
            array('invalid' => 'The start time ("%left_field%") must be before the end time ("%right_field%")')),
       )),
          new sfValidatorSchemaCompare('date_from', sfValidatorSchemaCompare::LESS_THAN, 'date_to',
            array('throw_global_error' => true),
            array('invalid' => 'The start date ("%left_field%") must be before the end date ("%right_field%")')),
    )
  ));

我将渲染这个:

<?php $form['email']->renderLabel() ?>
**<?php echo $form['email']->getError() ?>** 

但是在 sfValidatorOr 中这不起作用

I have:

$this->validatorSchema->setPostValidator(new sfValidatorOr(
  array(
    new sfValidatorSchemaCompare('email', '!=', ''),
    new sfValidatorSchemaCompare('phone', '!=', ''),
  ),
  array(),
  array('invalid' => 'Campo obligatorio')
));

Error is in $form->getGlobalErrors(). How can i add

array('throw_global_error' => true),

same as here:

$this->validatorSchema->setPostValidator(
  new sfValidatorOr(
    array(
      new sfValidatorAnd( 
        array(
          new sfValidatorSchemaCompare('date_from', sfValidatorSchemaCompare::EQUAL, 'date_to',
            array('throw_global_error' => true),
            array('invalid' => 'The start date ("%left_field%") must be equal the end date ("%right_field%")')),
          new sfValidatorSchemaCompare('time_from', sfValidatorSchemaCompare::LESS_THAN, 'time_to',
            array('throw_global_error' => true),
            array('invalid' => 'The start time ("%left_field%") must be before the end time ("%right_field%")')),
       )),
          new sfValidatorSchemaCompare('date_from', sfValidatorSchemaCompare::LESS_THAN, 'date_to',
            array('throw_global_error' => true),
            array('invalid' => 'The start date ("%left_field%") must be before the end date ("%right_field%")')),
    )
  ));

?

i will render this :

<?php $form['email']->renderLabel() ?>
**<?php echo $form['email']->getError() ?>** 

but in sfValidatorOr this doesn't work

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

跨年 2024-11-26 20:46:21

您可以将 throw_global_error 选项直接放在 sfValidatorSchemaCompare() 上。

无法将其放在 sfValidatorOr 上,因为它不是 sfValidatorSchema 对象。

You can put the throw_global_error option directly on sfValidatorSchemaCompare().

There is no way to put it on the sfValidatorOr as it's not a sfValidatorSchema object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文