这里我讲一下在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