新建 app\filters\LoggingFilter 繼承 yii\base\ActionFilter
LoggingFilter 的功能: 在指定請求的 action 前后各記錄一條日志
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?php namespace app\filters; use yii\base\ActionFilter; class LoggingFilter extends ActionFilter { public function beforeAction( $action ) { parent::beforeAction( $action ); // To do something printf( 'This is a logging for %s\beforeAction.%s' , $this ->getActionId( $action ), PHP_EOL); return true; } public function afterAction( $action , $result ) { parent::afterAction( $action , $result ); // To do something printf( 'This is a logging for %s\afterAction.%s' , $this ->getActionId( $action ), PHP_EOL); return true; } } |
新建 app\controllers\SystemController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<?php namespace app\controllers; use app\filters\LoggingFilter; class SystemController extends \yii\web\Controller { public function behaviors() { parent::behaviors(); return [ 'anchorAuth' => [ 'class' => LoggingFilter::className(), 'only' => [ 'test' , 'test-one' ], // 僅對 'test'、'test-one' 生效 'except' => [ 'test-one' ], // 排除 'test-one' ], ]; } public function actionTestOne() { printf( 'This is a testing for %s.%s' , $this ->getRoute(), PHP_EOL); } public function actionTestTwo() { printf( 'This is a testing for %s.%s' , $this ->getRoute(), PHP_EOL); } public function actionTest() { printf( 'This is a testing for %s.%s' , $this ->getRoute(), PHP_EOL); } } |
測試
請求 http://yii.test/index.php?r=system/test
1
2
3
|
This is a logging for test\beforeAction. This is a testing for system/test. This is a logging for test\afterAction. |
請求 http://yii.test/index.php?r=system/test-one
1
|
This is a testing for system/test-one. |
請求 http://yii.test/index.php?r=system/test-two
1
|
This is a testing for system/test-two. |
總結
Yii 中的 ActionFilter(過濾器)相當于 Laravel 中的 Middleware(中間件),beforeAction 相當于前置中間件,afterAction 相當于后置中間件。
到此這篇關于Yii中特殊行為ActionFilter使用的文章就介紹到這了,更多相關Yii特殊行為ActionFilter使用內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://segmentfault.com/a/1190000037480693