學習 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

相關文章
相關標籤/搜索