Вот плагин, который будет вставлять идентификатор пользователя в представление или устанавливать его в null, если у пользователя нет идентификатора.
<?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;
}
}
}
Чтобы включить его, вы можете зарегистрировать его в методе начальной загрузки, напримерthis:
Zend_Controller_Front::getInstance()
->registerPlugin(new Application_Plugin_Identity());
Теперь из любого из ваших скриптов представления вы можете ссылаться на $this->User_ID
, и он будет содержать идентификатор пользователя или ноль, если вы не авторизованы.
ОБНОВЛЕНИЕ:
Помощник действий работает хорошо, если вы в основном хотите получить к нему доступ с вашего контроллера.
С вашего контроллера позвоните $userId = $this->_helper->Identity();
, чтобы получить идентификатор пользователя.В качестве бонуса я назначаю идентификатор пользователя для представления, поэтому из представления можно позвонить $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;
}
}