Php Symfony表单框架-实现更改密码功能的最佳方法?
我正试图了解Symfony 1.4中的表单框架。我在“更多使用symfony”一书中读到了令人难以置信的内容,但我仍然不确定如何实现简单的“更改密码”功能 要求很基本,Php Symfony表单框架-实现更改密码功能的最佳方法?,php,forms,frameworks,symfony1,Php,Forms,Frameworks,Symfony1,我正试图了解Symfony 1.4中的表单框架。我在“更多使用symfony”一书中读到了令人难以置信的内容,但我仍然不确定如何实现简单的“更改密码”功能 要求很基本, 将有两个字段,new\u password,和confirm\u new\u password。这两个字段都是输入字段 new\u password字段将被验证为包含字母和数字的6到30个字符的字符串 confirm\u new\u password字段将被验证为与new\u password字段完全匹配 现在,现在我通过,
new\u password
,和confirm\u new\u password
。这两个字段都是输入字段new\u password
字段将被验证为包含字母和数字的6到30个字符的字符串confirm\u new\u password
字段将被验证为与new\u password
字段完全匹配- 向我的表单中添加2个新字段
- 将字符串验证器添加到
字段以检查字符串长度new_password
- 将字符串验证器添加到
字段以确保已填写该字段confirm\u new\u password
- 然后验证新密码是否有效,并与自定义post验证器中的确认密码相匹配。我这样做是因为在
字段有效之前,我不想验证new\u password
字段confirm\u new\u password
注意:没有
当前\u密码
字段,因为这是我的管理区域。我为symfony 1.2创建了某种密码验证程序(我还没有对1.4进行测试)。你可以看看
其基本特点是:
- 根据一个或多个正则表达式验证密码
- 比较两个字段中的值是否相同
- 如果已经设置了密码,则不必填写密码字段以进行验证(如果密码更改字段集成在配置文件表单中,则很方便,如果不想更改密码,则字段可以为空)
您可以扩展此插件,自定义以满足您的需要,这是一个非常常用的插件(最常用)。我还没有听说有任何已经为您构建的插件 自定义小部件和验证程序 您可以创建一个自定义小部件来封装这两个表单字段,只要您只需要一个与字段关联的标签就可以实现。如果您想为此创建自定义验证器,那么它必须是后验证器(请参见sfValidatorSchemaCompare示例),因为字段验证器只接收一个要验证的值。通过这种方法,您最终将获得:
- 在表单中定义一个小部件
- 将后验证器功能移动到单独的类中
- 确认密码字段的标签
sfPasswordEditForm
类,您的表单可以扩展该类,该类定义两个密码字段和后验证器。然后,您可以使用widgetSchema
的方法将字段按您希望的顺序放置在自定义表单中:
$this->widgetSchema->moveField('password', 'after', 'username');
$this->widgetSchema->moveField('password_again', 'after', 'password');
有几个人建议去看电视。在这样做之后,我注意到它实现了更改密码功能,这与我目前实现它的方式非常接近
谢谢你的回答 我不认为sfGuard包含“更改密码”功能。编辑:我的观点是正确的,似乎是这样。我认为合并比继承更好。