Zend_Session没有携带值来查看

时间:2013-02-14 11:10:50

标签: zend-framework session-variables zend-session

我已经在我的MVC网站中设置了一个Session变量,用于携带要在任何后续页面上使用的ID。

在我的控制器中,var_dumping会话使用正确的值显示它,但当我将所述值传递给视图并尝试在那里回显它时,它会显示为空白。

关于最新情况的任何指示都会导致它们不出现。

请注意,视图是局部视图,而不是主视图。

Bootstrap会话相关代码:

protected function _initSession(){
    Zend_Session::start();
    $SessAuto2Auto = new Zend_Session_Namespace('SessAuto2Auto');

    $SessAuto2Auto->cityIds = "1,2,3";   // Hard code values for testing purposes
    $SessAuto2Auto->IndustryIds = "3,4"; // Hard code values for testing purposes
}

控制器相关代码:ProductController.php

public function indexAction()
{
    // .. Unrelated code removed for brevity

    $response = $this->getResponse();
    $response->insert('sidebar', $this->view->render('sidebar.phtml'));

    // This code is dumping the values correctly
    echo('<pre>');
    var_dump($this->sessionAuto2Auto);
    echo('</pre>');

    // .. Unrelated code removed for brevity

    $this->view->filterCity = $this->sessionAuto2Auto['cityIds'];
    $this->view->filterIndustryIds = $this->sessionAuto2Auto['IndustryIds'];
}

查看部分:sidebar.phtml

<?php
    // This code does NOT show the value, comes up blank
    echo($this->filterCity);
?>

1 个答案:

答案 0 :(得分:0)

如果使用部分帮助器调用sidebar.phtml,则partials具有自己的变量范围,它们只能访问传递给它们的变量。您需要在部分帮助程序调用中包含会话变量:

echo $this->partial('sidebar.phtml', array(
    'filterCity' => $this->filterCity,
    'filterIndustryIds' => $this->filterIndustryIds
)

或使用render(使用与其他视图脚本相同的范围):

<?=$this->render('sidebar.phtml')?>