最近就有这样的问题。像这样解决了:
通常控制器是 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
to
class IndexController extends ME_Controller_Base
重要的是,请记住始终在控制器的 init() 部分中调用 Parent::init() (无论如何,这是一个很好的做法)
class IndexController extends ME_Controller_Base
{
public function init()
{
parent::init();
}
}
现在您可以将任何您喜欢的代码添加到“Base”控制器中。当我们将 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 分钟内看到的用户来显示列表。