【问题标题】:How can I use the sfValidatorEmail validator in Symfony to validate a single email field如何在 Symfony 中使用 sfValidatorEmail 验证器来验证单个电子邮件字段
【发布时间】:2011-05-11 04:45:46
【问题描述】:

我有一个包含 2 个元素的表单,将被提交,然后更新用户个人资料的一部分。

我不想使用整个生成的表单,并且必须删除除我需要的两个字段之外的所有字段。我只是希望能够创建一个非常简单的表单来进行更新。

有没有办法在邮件字段返回值的操作中利用 Symfony 的 sfValidatorEmail?

由于正则表达式已经写在验证器中,我想重用它,但是我不知道如何在非symfony表单提交后的操作中使用它。

【问题讨论】:

    标签: email forms symfony1 validation


    【解决方案1】:

    这里有两种方法 - 您可以构建一个简单的表单,它从 sfForm/sfFormSymfony 扩展而来(不必基于 ORM),它只包含您想要的 2 个字段。这样您就可以使用现有的验证框架,然后在验证所有内容后使用$myForm->getValues() 来获取您的个人资料更新值。

    或者,正如您所提到的,您可以在您的操作中使用 sfValidatorEmail 类,如下所示:

    $dirtyValue = "broken.email.address"
    $v = new sfValidatorEmail();
    try
    {
      $v->clean($dirtyValue);
    }
    catch (sfValidatorError $e)
    {
      // Validation failed
    }
    

    如果您有许多需要清理的值,后一种方法会很快导致代码混乱,因此值得将逻辑放回表单中,以便以通常的方式处理。

    【讨论】:

    • 感谢您提供的出色示例。我很快就会使用它。
    • 感谢您的回答。不错。
    【解决方案2】:

    如果您要提交包含 2 个元素的表单,则它应该是编辑和更新结束时的表单。 Symfony 表单是轻量级的,没有性能理由不使用它们。相反,为此目的制作一个自定义表单:

    class ProfileUpdateForm extends ProfileForm
    {
      public function configure()
      {
        $this->useFields(array('email', 'other_field'));
      }
    }
    

    【讨论】:

    • 是的,我想使用表单系统最符合我的利益。当我有一段时间没有使用它们时,我只是对复杂性感到沮丧。
    猜你喜欢
    • 2018-07-30
    • 1970-01-01
    • 2012-04-08
    • 2011-03-06
    • 2013-10-28
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多