I have setup in my MVC site a Session variable to carry ids to be used on any subsequent pages.

In my controller, var_dumping the session shows its there with the correct values but when I pass said values to the view and trying to echo them there, it comes up blank.

Any pointers as to whats going on to cause them to not appear.

Please note, the view is a partial view, not the main one.

Bootstrap session related code:

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
}

Controller related code : 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'];
}

View partial : sidebar.phtml

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

解决方案

If you are calling sidebar.phtml using the partial helper, partials have their own variable scope, they can only access variables which are passed in to them. You need to either include your session variables in your partial helper call:

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

or use render instead (which uses the same scope as the other view scripts):

<?=$this->render('sidebar.phtml')?>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top