我已经在我的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);
?>
答案 0 :(得分:0)
如果使用部分帮助器调用sidebar.phtml
,则partials具有自己的变量范围,它们只能访问传递给它们的变量。您需要在部分帮助程序调用中包含会话变量:
echo $this->partial('sidebar.phtml', array(
'filterCity' => $this->filterCity,
'filterIndustryIds' => $this->filterIndustryIds
)
或使用render(使用与其他视图脚本相同的范围):
<?=$this->render('sidebar.phtml')?>