您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)yii過濾器有什么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
過濾器
過濾器是控制器動(dòng)作執(zhí)行之前或之后執(zhí)行的對(duì)象。 例如訪問控制過濾器可在動(dòng)作執(zhí)行之前來控制特殊終端用戶是否有權(quán)限執(zhí)行動(dòng)作, 內(nèi)容壓縮過濾器可在動(dòng)作執(zhí)行之后發(fā)給終端用戶之前壓縮響應(yīng)內(nèi)容。 (推薦學(xué)習(xí):yii框架)
過濾器可包含預(yù)過濾(過濾邏輯在動(dòng)作之前)或后過濾(過濾邏輯在動(dòng)作之后), 也可同時(shí)包含兩者。
使用過濾器
過濾器本質(zhì)上是一類特殊的 行為, 所以使用過濾器和 使用行為一樣。 可以在控制器類中覆蓋它的 behaviors() 方法來聲明過濾器,如下所示:
public function behaviors() { return [ [ 'class' => 'yii\filters\HttpCache', 'only' => ['index', 'view'], 'lastModified' => function ($action, $params) { $q = new \yii\db\Query(); return $q->from('user')->max('updated_at'); }, ], ]; }
控制器類的過濾器默認(rèn)應(yīng)用到該類的 所有 動(dòng)作, 你可以配置 only 屬性明確指定控制器應(yīng)用到哪些動(dòng)作。 在上述例子中,HttpCache 過濾器只應(yīng)用到 index 和 view 動(dòng)作。 也可以配置 except 屬性 使一些動(dòng)作不執(zhí)行過濾器。
除了控制器外,可在 模塊或應(yīng)用主體 中申明過濾器。 申明之后,過濾器會(huì)應(yīng)用到所屬該模塊或應(yīng)用主體的 所有 控制器動(dòng)作, 除非像上述一樣配置過濾器的 only 和 except 屬性。
注意: 在模塊或應(yīng)用主體中申明過濾器,在only 和 except 屬性中使用路由 代替動(dòng)作 ID, 因?yàn)樵谀K或應(yīng)用主體中只用動(dòng)作ID并不能唯一指定到具體動(dòng)作。
當(dāng)一個(gè)動(dòng)作有多個(gè)過濾器時(shí),根據(jù)以下規(guī)則先后執(zhí)行:
預(yù)過濾
按順序執(zhí)行應(yīng)用主體中 behaviors() 列出的過濾器。
按順序執(zhí)行模塊中 behaviors() 列出的過濾器。
按順序執(zhí)行控制器中 behaviors() 列出的過濾器。
如果任意過濾器終止動(dòng)作執(zhí)行, 后面的過濾器(包括預(yù)過濾和后過濾)不再執(zhí)行。
成功通過預(yù)過濾后執(zhí)行動(dòng)作。
后過濾
倒序執(zhí)行控制器中 behaviors() 列出的過濾器。
倒序執(zhí)行模塊中 behaviors() 列出的過濾器。
倒序執(zhí)行應(yīng)用主體中 behaviors() 列出的過濾器。
關(guān)于“yii過濾器有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。