Symfony表单框架 - 实现更改密码功能的最佳方法?

时间:2010-01-29 21:11:29

标签: php forms frameworks symfony1

我试图了解Symfony 1.4中的表单框架。我在“更多与symfony”一书中读到了令人难以置信的detailed section,但我仍然不确定如何实现简单的“更改密码”功能。

要求非常基本,

  1. 将有两个字段new_passwordconfirm_new_password。两者都是输入字段。
  2. new_password字段将被验证为包含字母和数字的6到30个字符之间的字符串。
  3. confirm_new_password字段将经过验证,与new_password字段完全匹配。
  4. 现在,我实现了这个,

    • 在表单中添加2个新字段。
    • 将字符串验证程序添加到new_password字段以检查字符串长度。
    • 将字符串验证程序添加到confirm_new_password字段以确保其已填写。
    • 然后验证新密码是否有效并与自定义帖子验证器中的确认密码相匹配。我这样做是因为在confirm_new_password字段有效之前我不想验证new_password字段。

    现在到我的问题。在阅读了上面提到的文章后,我开始认为我应该在单个小部件或子形式中包含两个字段,因为它们相互依赖,而没有另一个则没用。

    我想知道人们对此的看法是什么,如果有人实施过,他们是如何做到的?

    由于

    注意:没有current_password字段,因为这是我的管理区域。

4 个答案:

答案 0 :(得分:6)

您可以使用sfDoctrineGuardPlugin

此插件为您的网站用户管理提供了方便的表单,模型和控制器。

您可以扩展此插件,自定义以满足您的需求,这是一个非常常用的插件(最常用的插件)。

答案 1 :(得分:0)

我为symfony 1.2创建了某种密码验证器(我没有为1.4测试过它)。您可以查看here

基本功能是:

  • 根据正则表达式或多个正则表达式验证密码。
  • 比较两个字段中的值是否相同。
  • 如果已设置密码,则无需填写密码字段以进行验证(如果密码更改字段集成在配置文件表单中,如果不想更改字段可以为空,则很方便密码)。

要使用它,您必须设置两个输入字段并将验证器添加为这两个字段的后验证器。

这不完全是你想要的,但也许它会给你一个开始。

答案 2 :(得分:0)

我还没有听说过任何已经为你处理此事的内容。

自定义小部件和验证程序

您可以创建一个自定义小部件来封装两个表单字段,只要您只需一个与您的字段关联的标签即可实现此目的。如果您想为此创建自定义验证器,则必须是后验证器(请参阅sfValidatorSchemaCompare作为示例),因为字段验证器仅接收一个要验证的值。通过这种方法,您最终会获得:

  • 在表单中定义少一个小部件
  • 将帖子验证器功能移动到单独的类

失去了:

  • 确认密码字段的标签

嵌入表格

对于我来说,嵌入式表单似乎不对,因为密码/确认字段不是父元素的子部分。

<强>继承

另一种可能适合您的方法是创建一个sfPasswordEditForm类,您的表单可以扩展该类,定义您的两个密码字段并发布验证器。然后,您可以使用widgetSchema的{​​{3}}方法将字段按照您希望的顺序放置在自定义表单中:

$this->widgetSchema->moveField('password', 'after', 'username');
$this->widgetSchema->moveField('password_again', 'after', 'password');

答案 3 :(得分:0)

有些人建议查看sfGuardPlugin。在这样做之后,我注意到它实现了更改密码功能,几乎就是我目前正在实现它的方式。

感谢您的回答!

相关问题