なんか、まとめて、ちゃんと書いてないので、ちょこっとめも。
Zendでセッションを使うには、次のことを行う。
(1)Zend/Session.phpをrequire_onceする
(2)Zend_Session::start();
(3)セッションを使うところで、 new Zend_Session_Namespace(ネームスペース名)
たとえば、はじめのページにアクセスしたら、カウントアップするというのをつくるとすると
(セッションでやっているので、セッションが切れたら、0に戻ってしまうので、アクセスカウンタの役は、しない)
index.phtmlで、
<html> <head> <title>回数表示</title> </head> <body> <?php echo $this->escape($this->kaisu);?>回目 </body> </html> |
(< > は、本当は半角)
なふうに、kaisuという言葉を表示するとして、
コントローラーのindexController.phpで、
<?php require_once 'Zend/Controller/Action.php'; require_once 'Zend/Session.php'; Zend_Session::start(); class IndexController extends Zend_Controller_Action { public function indexAction() { $myNamespace = new Zend_Session_Namespace('indexPage'); $myNamespace->kaisu++; $this->view->assign('kaisu',$myNamespace->kaisu); } } |
(< > は、本当は半角なので、置換しないと、コピペしても動かない)
なふうに、indexPageのkaisuに値を保存して、それを表示する。
なお、このように行うと、
ZendFrameworlkでZend_Sessionがつかえません
http://oshiete.goo.ne.jp/qa/3644632.html?order=asc
にあるように、
Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Session must be started before any output has been sent to the browser; output started in
というエラーになることがあるようだ。
(xamppでインストールすると、なる??)
そのときは、そこにあるように、php.iniのoutput_bufferingの行を、
output_buffering = 4096
にすると、直る??(まだ、未確認)