newapp\filters\LoggingFilterinheritanceyii\base\ActionFilter

LoggingFilter records a log before and after the requested action


      

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; }}Copy the code

newapp\controllers\SystemController


      

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'].// Only for 'test' and 'test-one'
                'except'= > ['test-one']./ / out '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); }}Copy the code

test

requesthttp://yii.test/index.php?r=system/test

This is a logging for test\beforeAction.
This is a testing for system/test.
This is a logging for test\afterAction.
Copy the code

requesthttp://yii.test/index.php?r=system/test-one

This is a testing for system/test-one.
Copy the code

requesthttp://yii.test/index.php?r=system/test-two

This is a testing for system/test-two.
Copy the code

conclusion

ActionFilter in Yii is equivalent to Middleware in Laravel, beforeAction is equivalent to front Middleware, and afterAction is equivalent to back Middleware.

The original link

  • Github.com/guanguans/g…