Here is a plugin that will inject the user id into the view, or set it to null if the user has no identity.
<?php
class Application_Plugin_Identity extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$front = Zend_Controller_Front::getInstance();
$bootstrap = $front->getParam('bootstrap');
$bootstrap->bootstrap('view');
$view = $bootstrap->getResource('view');
if (Zend_Auth::getInstance()->hasIdentity()) {
$view->User_ID = Zend_Auth::getInstance()->getIdentity()->User_ID;
} else {
$view->User_ID = null;
}
}
}
To enable it you can register it in a bootstrap method like this:
Zend_Controller_Front::getInstance()
->registerPlugin(new Application_Plugin_Identity());
Now from any of your view scripts, you can reference $this->User_ID
and it will contain the user's id or null if not logged in.
UPDATE:
An action helper works well if you mostly want to access it from your controller.
From your controller, call $userId = $this->_helper->Identity();
to get the user ID. As a bonus, I have it assign the user id to the view as well so from the view you can call $this->User_ID
<?php
class My_Helper_Identity extends Zend_Controller_Action_Helper_Abstract
{
protected static $_userId = null;
public function direct()
{
if ($this->_userId == null) {
$request = $this->getRequest();
$view = $this->getActionController()->view;
if (Zend_Auth::getInstance()->hasIdentity()) {
$user_id = Zend_Auth::getInstance()->getIdentity()->User_ID;
} else {
$user_id = null;
}
$view->User_ID = $user_id;
$this->_userId = $user_id;
$this->getActionController()->_userId = $user_id;
}
return $this->_userId;
}
}