空模块和空操作
空操作是指系统在找不到指定的操作方法的时候,会定位到空操作方法来执行,利用这个机制,可以实现错误页面和一些URL的优化。
<?php
class CityAction extends Action{
public function _empty($name){
//把所有城市的操作解析到city方法
$this->city($name);
}
//注意 city方法 是 protected 方法
protected function city($name){
//和$name这个城市相关的处理
echo '当前城市' . $name;
}
}
<?php
class EmptyAction extends Action{
public function index(){
//根据当前模块名来判断要执行那个城市的操作
$cityName = MODULE_NAME;
$this->city($cityName);
}
//注意 city方法 本身是 protected 方法
protected function city($name){
//和$name这个城市相关的处理
echo '当前城市' . $name;
}
}
前置和后置操作
class IndexAction extends Action{
//前置操作方法
public function _before_index(){
echo 'before<br/>';
}
public function index(){
echo 'index<br/>';
}
//后置操作方法
public function _after_index(){
echo 'after<br/>';
}
}
跳转和重定向系统的Action类内置了两个页面跳转方法error和success,分别用于错误(提示)跳转和成功(提示)跳转。两个方法都会输出一个提示信息页面,然后自动跳转到指定的地址。如果当前请求是ajax方式的话,则会自动进行ajax数据返回。
$User = M('User'); //实例化User对象
$result = $User->add($data);
if($result){
//设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']
$this->success('新增成功', '/User/list');
} else {
//错误页面的默认跳转页面是返回前一页,通常不需要设置
$this->error('新增失败');
}
Success和error方法都有对应的模板,并且可以设置,默认的设置是系统模板://默认错误跳转对应的模板文件
'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
//默认成功跳转对应的模板文件
'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
可以在项目配置文件中修改为使用项目内部的模板文件//默认错误跳转对应的模板文件
'TMPL_ACTION_ERROR' => 'Public:error',
//默认成功跳转对应的模板文件
'TMPL_ACTION_SUCCESS' => 'Public:success',
系统提供了redirect方法实现页面的重定向功能//重定向到New模块的Category操作
$this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...');
AJAX返回
格式:$this->ajaxReturn(返回数据[,返回数据格式])
页面跳转方法success和error如果在ajax请求方式线面会自动调用ajaxReturn方法,例如:
$this->success('发布成功',$url);
等效于使用$data['info'] = '发布成功';
$data['url'] = $url;
$data['status'] = 1;
$this->ajaxReturn($data);
页面请求类型
REQUEST_METHOD | 当前请求类型 |
IS_GET | 是否GET请求 |
IS_POST | 是否POST请求 |
IS_PUT | 是否PUT请求 |
IS_DELETE | 是否DELETE请求 |
IS_AJAX | 是否AJAX请求 |
class UserAction extends Action{
public function update(){
if (IS_POST){
$User = M('User');
$User->create();
$User->save();
$this->success('保存完成');
}else{
$this->error('非法请求');
}
}
}
伪静态如果希望统一伪静态后缀,可以设置:
'URL_HTML_SUFFIX' => 'html'
也可以支持多个后缀'URL_HTML_SUFFIX' => 'html|shtml|xml'
多层控制器Action/UserAction //用于用户的业务逻辑控制和调度
Event/UserEvent //用于用户的事件响应操作