控制器高级特性

空模块和空操作

空操作是指系统在找不到指定的操作方法的时候,会定位到空操作方法来执行,利用这个机制,可以实现错误页面和一些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 //用于用户的事件响应操作






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值