首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Zend framework 1中获取布局中的会话值?

如何在Zend framework 1中获取布局中的会话值?
EN

Stack Overflow用户
提问于 2013-09-24 00:01:56
回答 2查看 4.8K关注 0票数 0

我想从layout.xml访问会话值。

我做的代码是

Layout.xml

代码语言:javascript
复制
<h2><?php  $myprofile=new Zend_Session('user_session');
  print $myprofile->username; ?> </h2>

索引控制器/索引操作

代码语言:javascript
复制
  $userid = $this->_user->getUserId($username,$password);
  $session = new Zend_Session_Namespace('user_session');
  $session->username = $username;
  $session->password = $password;
  $session->uid = $userid;
  $this->_redirect('home');

主控制器/索引操作

代码语言:javascript
复制
$this->session = new Zend_Session_Namespace('user_session');
$this->view->uname = $this->session->username;

Home/index.phtml

代码语言:javascript
复制
<?php echo "The User Name is ".$this->uname?>

但是它显示了一个错误

代码语言:javascript
复制
Fatal error: Call to protected Zend_Session::__construct() from context 'Zend_View' in/var/www/shoppingcart/application/layouts/scripts/layout.phtml on line 19

我可以在Home/index.html中获得会话值。

期待积极的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-09-24 00:29:37

为什么在布局中使用Zend_Session,在视图中使用Zend_Session_Namespace?此外,您可能不应该在视图/布局中使用会话,而应将其作为参数从控制器或引导程序文件传递

票数 0
EN

Stack Overflow用户

发布于 2013-09-24 17:22:21

我同意我的观点,将Zend_Session放在视图脚本中通常被认为是不好的做法。我确实也会把它放在bootstrap中,如下所示……

代码语言:javascript
复制
// Bootstrap.php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    public function _initUserSession()
    {
        // If not already done, bootstrap the view
        $this->bootstrap('view');
        $view = $this->getResource('view');

        // Initialise the session
        $session = new Zend_Session_Namespace('user_session');

        // See if the username has been set, and if not at 
        // least make the variable
        if (isset($session->username)
            $view->username = $session->username;
        else
            $view->username = null;       
    }
}

然后在布局中,你可以这样做:

代码语言:javascript
复制
<?php if ($this->username !== null) : ?>
   The User Name is <?php echo $this->username ?>
<?php else : ?>
   No username has been set.
<?php endif; ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18963815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档