0

我在我的 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);
?>
4

1 回答 1

0

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

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

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

<?=$this->render('sidebar.phtml')?>
于 2013-02-14T11:20:42.593 回答