使用Maypole进行快速Web应用开发:第2部分

作者:凯旋网络来源:凯旋网络
><P>Tosetupyouraccount,weonlyneedafewdetailsfromyou:</P><FORMMETHOD="POST"ACTION="/user/do_register"><P>Yourname:<inputname="first_name"><inputname="last_name"></P><P>Youremailaddress:<inputname="email"></P><P>Pleasechooseapassword:<inputname="password"></P><inputtype="submit"name="Register"value="Register"></FORM>

像以前一样,我们需要向"Class::DBI::FromCGI"。解释这些字段的编辑属性(也就是这些字段对应的检查方式):

ISellIt::User->untaint_columns(printable=>[qw/first_namelast_namepassword/],email=>[qw/email/],);

现在我们能写我们的do_register事件了,使用FromCGI的形式:

subdo_register:Exported{my($self,$r)=@_;my$h=CGI::Untaint->new({$r->{params}});my$user=$self->create_from_cgi($h);

如果还有问题,我们把他们重新送回注册表单:

if(myerrors=$obj->cgi_update_errors){$r->{template_args}{cgi_params}=$r->{params};$r->{template_args}{errors}=\errors;$r->{template}="register";return;}

否则,我们现在就有了一个用户;我们就需要发送cookie给该用户,使他们保持正常登陆的状态。这是UserSessionCookie再一次给我们方便的地方了:

$r->{user}=$user;$r->login_user($user->id);

最后我们再一次把用户送上路:

$r->{template}="frontpage";}

至此:现在我们可以创建新的用户;提供一个找回密码功能就作为一个练习留给感兴趣的读者。

Maypole摘要

现在我们已经完成了——在一个很短的时间里,用最少量的代码,我们已经创建了一个在线商店。我喜欢Maypole的原因之一就是你只需要专心编写处理商业逻辑流程的代码就行;所有其他的显示模板都可以“借鉴”一下别人的,再给专业人士去处理,而且余下的工作都被Maypole在幕后魔术般地处理了。

感谢TPF基金对Maypole的支持,我们现在有了一份详尽且附有一些案例分析(包括这个)的用户手册,以及一个活跃的用户和开发者社区。我希望你很快也会加入!

  • 广告推荐