学习 yii 框架 – 使用简单的动做过滤器

这里我讲一下在yii框架中如何使用简单的过滤器(filter).php

yii 框架 提供了很好的动做(action)过滤,使用的方法也很简单,例如:web

只有经过 POST 请求才能访问 post/delete 页面,只需在控制器的 filters 方法中添加以下内容ajax

public function filters(){
    return array(
        'postOnly + delete'
    );
}

这里的 postOnly 是 yii 内置的过滤器,还有 ajaxOnly (只容许 ajax 请求) 也是内置的过滤器. 若是须要过滤多个动做只需将多个控制器的名字使用逗号(,)分隔,而后放到加号(+)后面,以下:app

public function filters(){
    return array(
        'postOnly + delete,submit...'
    );
}

上面说了怎么使用内置的过滤器,那么怎么来定制简单的过滤器呢,方法很简单框架

假如咱们在开发 Restful Api 时会用到 PUT 请求,在服务端就须要过滤只有是 PUT 请求才能够访问到 update 控制器(举例说明),那咱们就须要定义一个过滤 PUT 请求的过滤器 putOnly,定义的方法为:在控制器(Controller)中建立方法(function) filterPutOnly,方法的内容以下:yii

public function filterPutOnly($filterChain){
    if(Yii::app()->getRequest()->getIsPutRequest())
        $filterChain->run();
    else
        throw new CHttpException(400,'请求无效');
 }

自定义的过滤器的使用方法与上面的内置过滤器相同, 下面我说一下自定义过滤器的编写方法post

方法名: filter+过滤器名(首字母大写) 参数:$filterChain 为必填项,具体请见 /framework/web/filters/CFilterChain.php yii 框架在调用过滤器时会自动传递它 方法体:若是过滤经过,容许用户方法控制器则 执行 filterChain->run(),不经过则抛出异常code

经过以上介绍应该很容易的就会编写一些简单的过滤器了,例如过滤 Restful DELETE 请求的 deleteOnly 等等。开发

之后我会发些文章来介绍更为复杂的过滤器。get

相关文章
相关标签/搜索