Yii: общая точка входа

Я хотел бы зарегистрировать, какие пользователи посетили сайт сегодня. Для этого мне нужно обработать посещение пользователем любой страницы сайта.

Что такое общая точка входа (код, который выполняется при любом посещении любой страницы)?


person Denis Kulagin    schedule 06.06.2014    source источник
comment
index.php — это то, на что все указывает .htaccess.   -  person Pitchinnate    schedule 06.06.2014


Ответы (3)


Также вы можете создать класс BaseController, расширяющий CController, и использовать метод init. Например:



    class BaseController extends CController
    {
        public function init()
        {
            $this->loggedUserId    = Yii::app()->user->getId();
            $this->isLogged        = !empty($this->loggedUserId);

            if ($this->isLogged) {
                // some log actions
            }

            return parent::init();
        }
    }

person stepozer    schedule 06.06.2014

Я думаю, если вы хотите регистрировать, какие пользователи посещали сайт, вам следует реализовать эту функцию в компоненте user (по умолчанию CWebUser). Вы можете расширить этот класс и указать его в конфигурации для пользовательского компонента:

'user'=>array(
    // enable cookie-based authentication
    'allowAutoLogin'=>true,
    'class'=>'MyWebUser',
),
person Goodnickoff    schedule 06.06.2014
comment
Хорошо, но как мне выполнить некоторый код, когда пользователь запрашивает страницу с сайта? - person Denis Kulagin; 06.06.2014
comment
@DenisKulagin, например, следующим образом: public function init(){ parent::init(); //your code here } и метод регистрации вызовов там. - person Goodnickoff; 06.06.2014

Предполагая, что вы говорите о Yii 1.1

Есть onBeginRequest и onEndRequest, к которым можно прикрепить свою логику:

Пример (в соответствующем файле, скрипт index.php/custom loader, простой)

Yii::app()->onBeginRequest = function(CEvent $event) { handle_event($event); };

Или прикрепите пользовательское поведение к этому событию в своей конфигурации:

'behaviors' => array(
    'onbeginRequest' => array(
        'class' => 'application.components.AnalyticsBehaviour',
    )
)

и обрабатывать в поведении.

person Rangad    schedule 06.06.2014