0

Zend Framework-他のコントローラーで宣言されたスクリプト変数をビューで使用する方法は?コントローラで再度表示するには、変数を渡す必要がありますか?

4

3 に答える 3

1

簡単な答えはイエスです!、データをビューに再割り当てする必要があります。

ただし、オプションがあります。

このデータが多くのビュースクリプトで使用される場合は、ユースケースに応じてビューヘルパーまたはアクションヘルパーを作成することが適切な場合があります。

シンプルなビューヘルパー:

class Zend_View_Helper_Length extends Zend_View_Helper_Abstract
{

    public function length($minutes)
    {

        $hours = floor($minutes / 60);
        $minutes = $minutes % 60;

        if ($hours > 0) {
            $time = sprintf("%01d Hours %02d Minutes", $hours, $minutes);
        } else {
            $time = sprintf("%02d Minutes", $minutes);
        }
        return $time;
    }
}

簡単なアクションヘルパー:

class My_Controller_Action_Helper_Login extends Zend_Controller_Action_Helper_Abstract
{

    public function direct()
    {
        $form = new Application_Form_Login();
        $form->setAction('/index/login');

        return $form;
    }
}

データを複数のアクションで使用する場合は、単一のコントローラーでinit()メソッドにデータを設定できます。

public function init()
    {
        //initialize the flash messenger action helper to work in all actions
        if ($this->_helper->FlashMessenger->hasMessages()) {
            $this->view->messages = $this->_helper->FlashMessenger->getMessages();
        }
    }

データを短期間保存する必要がある場合は、レジストリに保存するか、セッションを長期間保存できます(このソリューションは特に便利です)。

これらは、さまざまなデータをアプリケーションで利用できるようにするためのより一般的な方法のほんの一部です。より方向性のある質問は、より方向性のある回答を受け取る可能性があります。

于 2012-09-07T02:42:01.173 に答える
0

例:コントローラーが2つある場合:

コントローラーA:いくつかの変数があり、変数はビューAに渡されますコントローラーB:いくつかの変数があり、変数はビューBに渡されます

ビューBは、コントローラーAの変数にアクセスできません。

したがって、ビューBでコントローラーAの変数を使用する場合は、コントローラーBで再宣言する必要があります。

于 2012-09-06T14:19:42.777 に答える
-1

複数のビューインスタンスに追加したい「コア」ビュー変数がある場合は、抽象化レイヤーを追加して、そこでコアビュー変数を宣言することができます。例えば:

class myController extends Zend_Controller_Action

になる可能性があります

class myController extends myCoreController

class mySecondController extends myCoreController

class myCoreController extends Zend_Controller_Action

このようにして、コア変数をコントローラー間で使用可能にし、それらをすべて1か所で維持できます。

于 2012-09-06T14:17:39.633 に答える