Недавно возникла эта проблема. Решил это так:
Обычно контроллер является расширением Zend_Controller_action, например
class IndexController extends Zend_Controller_Action
В нашем проекте мы создали расширенный контроллер в / library / ME / Controller
class ME_Controller_Base extends Zend_Controller_Action
public function init()
{
parent::init();
}
}
Используя этот контроллер, вы можете расширить все остальные контроллеры с него - так, вышеприведенный контроллер по умолчанию идет от
class IndexController extends Zend_Controller_Action
до
class IndexController extends ME_Controller_Base
Важно, не забывайте всегда вызывать parent :: init () в разделе init () вашего контроллера (в любом случае, это хорошая практика)
class IndexController extends ME_Controller_Base
{
public function init()
{
parent::init();
}
}
Теперь вы можете добавить любой код, который вам нравится, в «базовый» контроллер. Поскольку мы используем Zend_Auth с пользовательским объектом Doctrine, конечный «базовый» контроллер выглядит следующим образом
class ME_Controller_Base extends Zend_Controller_Action
public function init()
{
parent::init();
$auth = Zend_Auth::getInstance();
$this->view->user = $auth;
$this->user = $auth;
// check auth
...
// write an update to say that this user is still alive
$this->user->getIdentity()->update();
}
}
Метод update () просто устанавливает «обновленное» поле на текущую дату и сбрасывает пользователя. Затем вы можете просто выбрать пользователей, которые были просмотрены в течение последних X минут, чтобы показать список.