基于Typecho的社区系统3
社区系统的功能页面通过路由功能都实现了,但是页面上的表单、表单处理方法却还没有解决
继续看Typecho
源码,会发现默认的表单操作都是使用action
路由的,而action
路由对应的组件为Widget_Do
,查看Widget_Do
文件中的路由映射,很容易就能够知道每个action
所对应的组件了
实现了Widget_Interface_Do
中的接口的才是动作
路由到动作
在Widget_Do
的路由映射中新增一个映射:
'setting' => 'Widget_Users_Setting'
这时链接http://siteUrl/action/setting
则会使用Widget_Users_Setting
组件来处理请求
新建Widget_Users_Setting
文件:
class Widget_Users_Setting extends Widget_Abstract_Users implements Widget_Interface_Do
{
public function action(){
if (!$this->user->hasLogin()) {
$this->response->goBack();
}
//上传头像
$this->on($this->request->is('do=avatar'))->doAvatar();
//发送验证码
$this->on($this->request->is('do=sendverify'))->sendVerify();
//保存个人信息
$this->on($this->request->is('do=profile'))->saveProfile();
//修改邮箱
$this->on($this->request->is('do=changemail'))->changeMail();
//修改密码
$this->on($this->request->is('do=changepass'))->changePwd();
}
}
action
就是默认动作执行的方法(与组件中execute
方法类似,都会自动调用)。
提交的数据通过动作中action
的处理,把不同的数据交给相应的方法去处理,再通过Typecho_Response
返回处理结果或做跳转
不同的动作对应的一个组件中数据处理的集合,把相似或统一组件的功能放在一个动作里面,方便开发以及维护
未完不知道有没有续……