LINUX.ORG.RU

Zend + сессии + мультиязычность


0

0

Help. Понадобилось для одного проекта использовать Zend. Вроде в сети туча мануалов лежит, но я что-то не догоняю, или глаза кривые ...

В каком файле мне нужно объявить сессию, так чтобы ее было видно из всех контроллеров? при попытке объявить сессию в самом контроллере, говорит, что «headers already sent» и идите нафиг.

если же я объявляю сессию в Bootstrap.php, то контроллер ее просто не видит.

То же самое с Translate: что надо сделать написано достаточно ясно, но в каком именно файле непонятно...

а компонентами самого ZF для работы с сессиями и мультиязычностью использовать не?

http://framework.zend.com/manual/ru/zend.session.basicusage.html

http://framework.zend.com/manual/ru/zend.translate.introduction.html

На примеры надо смотреть внимательно и осознавать, что именно оттуда брать.

По поводу бутстрапинга - рекомендую почитать про компоненту Zend_Application, выяснить, что и как там можно объявить (про то, что имена методов в бутстрапе должны начинаться _init... понятно, да?)

OldFornit
()
Ответ на: комментарий от OldFornit

я этот пример видел. что он делает понятно. непонятно в каком именно месте(файле) надо объявлять сессию. в контроллере не получается...

stiner_rd
() автор топика
Ответ на: комментарий от stiner_rd

сессию надо объявлять только по необходимости. У меня с объявлением в контроллере никаких проблем не было - стартовал примерно так:

class LoginController extends Zend_Controller_Action {

function indexAction() {

$session = new Zend_Session_Namespace('You_NameSpase');

$session->var1 = 1;

$session->var2 = 2;

}

function fooAction() {

$session = new Zend_Session_Namespace('You_NameSpase');

$this->view->var1 = $session->var1;

$session->__unset('var1');

}

}

OldFornit
()
Ответ на: комментарий от OldFornit

<?php

class IndexController extends Zend_Controller_Action {

   public function init(){
      /* Initialize action controller here */
      $this->view->baseUrl = $this->_request->getBaseUrl();
      }

   public function indexAction() {
      $this->view->mysession = new Zend_Session_Namespace('mysession');
      $this->view->title = «Title»;
      $this->view->headTitle($this->view->title);
      }
   }
?>

вот на такой код выдает:

Fatal error: Uncaught exception 'Zend_Controller_Response_Exception' with message 'Cannot send headers; headers already sent in /var/www/kloos_new/application/controllers/IndexController.php, line 25' in /usr/share/php/libzend-framework-php/Zend/Controller/Response/Abstract.php:282 Stack trace: #0 /usr/share/php/libzend-framework-php/Zend/Controller/Response/Abstract.php(300): Zend_Controller_Response_Abstract->canSendHeaders(true) #1 /usr/share/php/libzend-framework-php/Zend/Controller/Response/Abstract.php(727): Zend_Controller_Response_Abstract->sendHeaders() #2 /usr/share/php/libzend-framework-php/Zend/Controller/Front.php(984): Zend_Controller_Response_Abstract->sendResponse() #3 /var/www/kloos_new/application/Bootstrap.php(12): Zend_Controller_Front->dispatch() #4 /usr/share/php/libzend-framework-php/Zend/Application.php(358): Bootstrap->run() #5 /var/www/kloos_new/public/index.php(26): Zend_Application->run() #6 {main} thrown in /usr/share/php/libzend-framework-php/Zend/Controller/Response/Abstract.php on line 282

stiner_rd
() автор топика
Ответ на: комментарий от stiner_rd

все, понял в чем собака порылась :)

после замены установленой с помощью apt-get версии на 1.10 все заработало :)

stiner_rd
() автор топика
Ответ на: комментарий от stiner_rd

вообще правильно ругалось. Исходя из каких соображений объект-сессия передается в скрипт вида? В вид надо передавать уже значения, а не объекты.

а так - ob_start()

OldFornit
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.