├── README.md ├── composer.json └── src └── TrackingController.php /README.md: -------------------------------------------------------------------------------- 1 | # Yii2 tracking controller behavior # 2 | 3 | Yii2 controller behavior that captures tracking params from the query. 4 | Captured parameters are stored in session and you can access them any time. 5 | 6 | ## Installation ## 7 | 8 | The preferred way to install this extension is through [composer](http://getcomposer.org/download/). 9 | 10 | Either run 11 | 12 | php composer.phar require --prefer-dist yii-dream-team/yii2-tracking-controller "*" 13 | 14 | or add 15 | 16 | "yii-dream-team/yii2-tracking-controller": "*" 17 | 18 | to the `require` section of your composer.json. 19 | 20 | ### Usage as controller behavior ### 21 | Attach the behavior to your controller class: 22 | 23 | public function behaviors() 24 | { 25 | return [ 26 | 'utm_campaign' => [ 27 | 'class' => '\yiidreamteam\behaviors\TrackingController', 28 | 'queryParam' => 'utm_campaign', 29 | 'sessionParam' => 'utm_campaign', 30 | ], 31 | 'utm_source' => [ 32 | 'class' => '\yiidreamteam\behaviors\TrackingController', 33 | 'queryParam' => 'utm_source', 34 | 'sessionParam' => 'utm_source', 35 | ], 36 | ]; 37 | } 38 | 39 | Single param tracking: 40 | 41 | $utmCampaign = $this->trackingParam; 42 | 43 | Or 44 | 45 | $utmCampaign = $this->getTrackingParam('unknown_campaign'); 46 | 47 | Tracking multiple parameters: 48 | 49 | $utmSource = $this->behaviors['utm_source']->trackingParam; 50 | $utmCampaign = $this->behaviors['utm_campaign']->trackingParam; 51 | 52 | Or: 53 | 54 | $utmSource = $this->behaviors['utm_source']->getTrackingParam('unknown_source'); 55 | $utmCampaign = $this->behaviors['utm_campaign']->getTrackingParam('unknown_campaign'); 56 | 57 | ## Licence ## 58 | 59 | MIT 60 | 61 | ## Links ## 62 | 63 | * http://yiidreamteam.com/yii2/tracking-controller 64 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yii-dream-team/yii2-tracking-controller", 3 | "description": "Yii2 tracking controller behavior", 4 | "keywords": ["yii2", "controller", "url", "tracking", "behavior"], 5 | "type": "yii-extension", 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "Alexey Samoylov", 10 | "email": "alexey.samoylov@gmail.com" 11 | } 12 | ], 13 | "minimum-stability": "dev", 14 | "require": { 15 | "php": ">=5.4.0", 16 | "yiisoft/yii2": "*" 17 | }, 18 | "autoload": { 19 | "psr-4": { 20 | "yiidreamteam\\behaviors\\": "./src" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/TrackingController.php: -------------------------------------------------------------------------------- 1 | 4 | */ 5 | namespace yiidreamteam\behaviors; 6 | 7 | /** 8 | * Class TrackingController 9 | * 10 | * @property string $queryParam 11 | * @property string $sessionParam 12 | * @property string $trackingParam 13 | */ 14 | class TrackingController extends \yii\base\Behavior 15 | { 16 | 17 | public $queryParam; 18 | public $sessionParam; 19 | 20 | public function events() 21 | { 22 | return [ 23 | \yii\web\Controller::EVENT_BEFORE_ACTION => 'updateTrackingParam', 24 | ]; 25 | } 26 | 27 | /** 28 | * @param string|null $defaultValue 29 | * @return string|null 30 | */ 31 | public function getTrackingParam($defaultValue = null) 32 | { 33 | return \Yii::$app->session->get($this->sessionParam, $defaultValue); 34 | } 35 | 36 | /** 37 | * @return string|null 38 | */ 39 | public function updateTrackingParam() 40 | { 41 | if ($value = \Yii::$app->request->get($this->queryParam)) 42 | \Yii::$app->session->set($this->sessionParam, $value); 43 | } 44 | } 45 | --------------------------------------------------------------------------------