0

MVCサイトに、後続のページで使用するIDを運ぶセッション変数を設定しました。

私のコントローラーでは、セッションのvar_dumpingは正しい値でその値を表示しますが、その値をビューに渡してそこにエコーしようとすると、空白になります。

それらを表示しないようにするために何が起こっているかに関するポインタ。

ビューは部分的なビューであり、メインのビューではないことに注意してください。

ブートストラップセッション関連のコード:

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
)

または、代わりにレンダリングを使用します(他のビュースクリプトと同じスコープを使用します)。

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