【问题标题】:Symfony Multiple Post ValidatorsSymfony 多个帖子验证器
【发布时间】:2012-03-04 05:03:12
【问题描述】:

我正在使用 Symfony 1.4,但在使用多个表单验证器时遇到了问题。

对于表单的一部分,我需要确保电子邮件地址有效且唯一。 这是我尝试使用的代码:

$this->validatorSchema['email_address'] = new sfValidatorAnd(
    array(
        new sfValidatorEmail(),
        new sfValidatorPropelUnique(array('model' => 'Users', 'column' => 'email_address')
    ),

));

据我所知,这应该有效。但是,当我发布表单时,我收到以下错误消息

您必须将数组参数传递给 clean() 方法(此验证器只能用作后验证器)。

有什么想法或建议吗?

【问题讨论】:

    标签: php symfony1 propel


    【解决方案1】:

    正如上面所说,您只能将唯一验证器用作post validator。这意味着您可以将其直接应用于该字段 - 您需要通过 mergePostValidator 将其应用于架构。从功能上讲,这将产生您正在寻找的相同结果 - 例如。即使电子邮件是有效的,如果它已经存在,你会得到验证错误,但如果两者都通过,那么表单将是有效的。

    $this->validatorSchema['email_address'] = new sfValidatorEmail();
    $this->mergePostValidator(new sfValidatorPropelUnique(array('model' => 'Users', 'column' => 'email_address'));
    

    【讨论】:

    • 感谢 mergePostValidator 的提示。我对 symfony 比较陌生,所以有些术语对我来说就像科学疾病名称一样陌生。我会注意到,在您提供的示例代码中,调用 $this->validatorSchema->mergePostValidator(..) 为我创建了一个未知方法错误,而解决方案最终只是 $this->mergePostValidator(..)跨度>
    • 我可以确认应该在表单实例本身而不是验证器架构上调用 mergePostvalidator。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2018-02-16
    • 2023-03-04
    相关资源
    最近更新 更多