Zend_Auth に少し問題があり、Acl 内でエラーが発生し続けています。
ログイン コントローラー内で、次のように Zend_Auth ストレージをセットアップします。
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($adapter);
if ($result->isValid()) {
$userId = $adapter->getResultRowObject(array('user_id'), null)->user_id;
$user = new User_Model_User;
$users = new User_Model_UserMapper;
$users->find($userId, $user);
$auth->getStorage()->write(
$user
);
}
これはうまく機能しているようで、ビュー ヘルパー内の Zend_Auth ストレージに格納されたオブジェクトを問題なく使用できます。私が抱えているように見える問題は、Acl 内でこれを使用しようとするときです。以下は、Acl のスニペットですif($auth->hasIdentity()) {
。行に到達するとすぐに、例外がさらに詳細に表示されます。
これ$user->getUserLevel()
は、データベースに格納されている user_level_id を意味のあるフル ネームに変換できるユーザー モデル内のメソッドです。自動ローダーがこれらの種類のメソッドを認識し、必要なすべてのクラスをロードしようとすると想定しています。
例外を確認すると、クラスがモジュールに格納されているため、クラスを見つけるのに苦労しているように見えます。application.ini でオート ローダーの名前空間を設定しています。
誰でもこれを解決するのを手伝ってもらえますか?
class App_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
{
protected $_roleName;
public function __construct()
{
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity()) {
$user = $auth->getIdentity();
$this->_roleName = strtolower($user->getUserLevel());
} else {
$this->_roleName = 'guest';
}
}
}
Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Zend_Session::start() -
\Web\library\Zend\Loader.php(Line:146): Error #2 include_once() [<a href='function.include'>function.include</a>]:
Failed opening 'Menu\Model\UserLevel.php' for inclusion
(include_path='\Web\application/../library;\Web\library;.;C:\php5\pear') Array' in \Web\library\Zend\Session.php:493
Stack trace:
#0 \Web\library\Zend\Session\Namespace.php(143): Zend_Session::start(true)
#1 \Web\library\Zend\Auth\Storage\Session.php(87): Zend_Session_Namespace->__construct('Zend_Auth')
#2 \Web\library\Zend\Auth.php(91): Zend_Auth_Storage_Session->__construct()
#3 \Web\library\Zend\A in \Web\library\Zend\Session.php on line 493
ありがとう、
マーティン