协同工作:hu60wap6模板设计教程
为了使模板设计者与程序员能够协同工作,在每个页面开始代码编写之前,必须先约定好一些规则。
约定的主要内容包括URL的格式、表单的命名、Smarty变量的设置等。
下面是一个例子:
* 功能
注册页面要实现新用户注册的功能,包括输入注册信息、把用户添加到数据库、显示注册结果。
* URL
user.reg.xhtml?u=来源页地址
来源页地址由链接到注册页的页面负责提供,使用urlencode编码,并且必须是以cid.pid.[extid.]bid格式开始。
程序:注册页必须检查来源页是否合法(防止跨站盗取sid)。如果不合法或者为空,则把它设置为首页。合法的来源页地址应该是一个当前目录的相对路径,任何****://开头的地址都是非法的。
模板:必须提供“返回来源页”功能。
*页面
一共有三个页面,填写注册信息(reg_form.tpl)、注册成功(reg_success.tpl)、注册失败(reg_failure.tpl)
reg_form.tpl必须在一个模板内呈现两个表单:
当$smarty.post.check值为空时,显示第一个表单,让用户填写信息:
action=当前URL
method=post
需要以下项目(第一排是项目的name,最后一排是类型,中间是说明):
name 用户名/input text
pass 密码/input text(为了允许输入中文)
email 电子邮件/input text
check 提交按钮
当$smarty.post.check有值时,显示以下表单,来让用户二次确认密码:
action=当前URL
method=post
需要以下项目:
name input-hidden 设置为$smarty.post.name的值
pass input-hidden 设置为$smarty.post.pass的值
pass2 由用户输入,确认密码 input-text
email input-hidden 设置为$smarty.post.email的值
go 提交按钮
* reg_success.tpl
该模板需要显示用户成功注册的信息,并且显示返回来源页的地址。
设置的变量:
$u 来源页
$USER 用户信息数组
$name 用户名
$sid 用户身份id
说明:
该页面必须显示两个返回来源页地址,一个是{$u},另一个是{$smarty.server.PHP_SELF}/{$sid}/{$u}(供不支持Cookies的用户访问)
* reg_failure.tpl
该页显示注册失败的原因。
设置的变量:
$errmsg 错误信息
$u 来源页地址
$errnum 错误号
$name 注册时填的用户名
就这样了。假设用户注册的函数已经做好了,程序员和模板设计者是否都知道该怎么做了?
这些约定似乎相当复杂。等大家更熟悉了,或许会有更简单的解决方法。
补充一下:
程序:当$_POST['go']不存在时调用reg_form.tpl;存在时,试图注册并根据结果调用不同的模板。