基于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返回处理结果或做跳转
不同的动作对应的一个组件中数据处理的集合,把相似或统一组件的功能放在一个动作里面,方便开发以及维护
未完不知道有没有续……