2012-05-16 4 views
0

У меня следующий код в моем загрузчикеZend реестра не работает

protected function _userSession(){ 
    $session=new Zend_Session_Namespace("userIdentity"); 
    $session->greet="Hello!!!!!"; 
    Zend_Registry::set("session", $session);   
} 

И в контроллере я пишу:

public function index() { 
    $session = Zend_Registry::get("session"); 
    echo $session->greet;   
} 

Но он будет показывать сообщение об ошибке, как: запись не зарегистрирована для ключа ' сессия. Что не так с этим кодом. Любое решение.

+0

Подключиться к префиксу _initUserSession для его вызова? Или вы называете это в начальной загрузке в другой функции? – Gohn67

+0

Я создаю функцию _userSession в bootstrap, но не префикс с _init – Sky

ответ

3

Я думаю, вам просто нужно изменить загрузочный метод для сеанса пользователя в _initUserSession()

В зависимости от того, как вы установили вещи, загрузчик будет автоматически вызывать все методы, которые начинаются с _init

Смотрите здесь: http://framework.zend.com/manual/en/zend.application.theory-of-operation.html#zend.application.theory-of-operation.bootstrap.resource-methods

Если у вас есть по умолчанию, используемый index.php Зенд, то ваш загрузчик будет автоматически вызывать все методы, которые начинаются с _init

Так что если у вас есть что-то вроде следующего:

$application->bootstrap()->run();

Но если вы делаете что-то вроде этого:

$application->bootstrap(array(
    'FrontController', 
    'Layout', 
    'View', 
    'Db'))->run(); 

выше будет вызывать только методы инициализации для перечисленных в массиве ,

+1

да, я получил его большое спасибо ...... – Sky