像以前一样,我们需要向"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的支持,我们现在有了一份详尽且附有一些案例分析(包括这个)的用户手册,以及一个活跃的用户和开发者社区。我希望你很快也会加入!
