php - Symfony 多后验证器

标签 php symfony1 propel

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

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

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

));

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

You must pass an array parameter to the clean() method (this validator can only be used as a post validator).

有什么想法或建议吗?

最佳答案

您只能将唯一验证器用作后验证器,就像它说的那样。这意味着您可以将它直接应用于字段 - 您需要通过 mergePostValidator 将它应用于模式。从功能上讲,这将产生您正在寻找的相同结果 - 例如。即使电子邮件有效,如果它已经存在,您将收到验证错误,但如果两者都通过,则表单将有效。

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

关于php - Symfony 多后验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552473/

相关文章:

php - 为什么大数组索引没有正确存储?

php - Symfony 容器特性

php - 使用 PHP 转换 WooCommerce Webhook 有效负载

PHP 搜索获取字段中存在数据的位置

php - 重定向/转发到另一个操作并在 symfony 中发送 post 参数

php - 交响乐 : How to filter data on the frontend like in the backend

php - Symfony - 更改后验证器的错误消息而不覆盖其他验证器?

php - PROPEL - 将 sql 查询传输到 propel

PHP sf.1.4 插入 1.6 : memory leaking while looping results

mysql - Propel ORM 中的条件排序,条件中有一个点