专家:简单与sfDoctrineGuardPlugin登记
2008年12月3日·发表的乔纳森工资
所以,之后我最后教程演示如何定制sfGuardUser
在admin发生器模块sfDoctrineGuardPlugin我有几个请求一个简单的教程就如何构建一个注册模块插件。
本教程假设您已经阅读我的第一篇文章定制sfDoctrineGuardPlugin。
生成模块
首先,我们需要生成一个新的模块命名注册
我们将实现我们最初的注册功能。
美元。/ob娱乐下载 symfony生成:模块前端登记
创建RegisterForm
接下来我们需要做的是创建一个自定义表单类,它是一个生成的孩子sfGuardUserForm
位于lib /模型/理论/ sfDoctrineGuardPlugin / sfGuardUserForm.class.php
。你可以把这个文件但是我建议把它在任何地方应用程序/前端/模块/注册/ lib / RegisterForm.class.php
。
< ? php类RegisterForm扩展sfGuardUserForm{公共函数配置(){/ /删除所有部件我们不想秀设置(这个美元(“is_active”],这个美元(“is_super_admin”],这个美元(“updated_at”],这个美元(“groups_list”],这个美元(“permissions_list”],这个美元(叫“last_login”],这个美元(“created_at”],这个美元(“盐”],这个美元(“算法”]);/ /设置适当的密码验证与确认这个美元- >widgetSchema(“密码”]=新sfWidgetFormInputPassword();这个美元- >validatorSchema(“密码”]- >setOption(“要求”,真正的);这个美元- >widgetSchema(“password_confirmation”]=新sfWidgetFormInputPassword();这个美元- >validatorSchema(“password_confirmation”]=克隆这个美元- >validatorSchema(“密码”];这个美元- >widgetSchema- >moveField(“password_confirmation”,“后”,“密码”);这个美元- >mergePostValidator(新sfValidatorSchemaCompare(“密码”,sfValidatorSchemaCompare::平等的,“password_confirmation”,数组(),数组(“无效”= >两个密码必须相同。)));}}
实施行动
现在我们需要实现的行动处理登记。这段代码需要被添加到应用程序/前端/模块/注册/ actions.class.php
在executeIndex ()
函数。
公共函数executeIndex(sfWebRequest美元的请求){这个美元- >形式=新RegisterForm();如果(美元的请求- >isMethod(“职位”)){这个美元- >形式- >绑定(美元的请求- >getParameter(“sf_guard_user”));如果(这个美元- >形式- >isValid()){这个美元- >形式- >保存();这个美元- >getUser()- >signIn(这个美元- >形式- >getObject());这个美元- >重定向(“@homepage”);}}}
上述行动将流程表单,保存用户和新用户的迹象。
实现模板
在最后一步中我们实现了一个操作,创建一个RegisterForm
实例的$ this - >形式
变量。这种形式可以在实例应用程序/前端/模块/注册/模板/ indexSuccess.php
在美元的形式
变量,所以我们可以很容易地呈现形式像下图:
<标题> < / h1 >注册< ? php回声美元的形式- >renderFormTag(url_for(“注册/指数”))? ><表>< ? php回声美元的形式? >< /表> < input type =“提交”name =“注册”值=“注册”/ > < /形式>
使用sfGuardSecurityUser
我们需要做的最后一件事是改变应用程序/前端/ lib / myUser.class.php
延长sfGuardSecurityUser
而不是sfBasicSecurityUser
。
类myUser扩展sfGuardSecurityUser{}
现在当你的观点http://localhost/register
您应该看到下面的在您的浏览器中。
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
$ this - > validatorSchema(“用户名”)= new sfValidatorDoctrineUnique(数组(“模型”= >“sfGuardUser”,“列”= >“用户名”));
独特性是通过教义执行验证器(通过模式)。
然而,真正的,科幻小说应该验证。我猜这是一个错误的形式基类生成器。
profileForm = new profileForm美元($ this - >对象- >概要文件);
设置($ profileForm [“id”],美元profileForm [' sf_guard_user_id ']);
$ this - > embedForm(“概要”,profileForm美元);