1

私はphpを使用してnetbeansで作成したプロジェクトを持っており、Zendフレームワークを使用しているため、モデルビューコントローラーです。

クラス (newclassController) には、4 つのパブリック関数があります。2 番目の関数からグローバル変数を保存し、それを 4 番目の関数で使用したいと考えています

URL の変数をパラメーターおよび SESSION 変数として送信しようとしましたが、エラーが発生するので、他のアイデアがある場合は教えてください。

私が試したすべてのリターンは、このエラーメッセージを表示します:
Notice: Undefined variable

注: に変数をinit function保存すると機能しますが、別の関数から保存したいです。

4

2 に答える 2

2

あなたが値を開始するときに私の推測を逃さない限り:

public function init(){
    $this->value = 'value';
}

値は、コントローラー内のすべての「アクション」で使用できます。

これは仕様によるものです。

このinit()メソッドは、コンストラクターを補足するために ZF1 で使用されます。通常はコンストラクターに配置される可能性のある引数を追加する場所です。

あるアクションから別のアクションに値を永続化するには、何らかの形式のストレージを使用する必要があります。

例えば:

//a verbose example
public function indexAction(){
    //initiate a variable
    $i = 100;
    //start a new session and assign a name to it
    $session = new Zend_Session_Namespace('number');
    //assign the value to the namespace
    $session->value = $i
}

後で同じコントローラーまたは別のコントローラーで

public function newAction(){
    //access the session
    $session = new Zend_Session_Namespace('number');
    //assign the value to the view
    $this->view->value = $session->value;
}

new.phtml ビューに

<?php echo $this-value ?>

PHP、特に Zend Framework 1 を使用する際に覚えておくべき重要なことは、すべてのリクエストがアプリケーション全体を実行することです。

これは、最初に私をつまずかせた概念でした。新しいページをリクエストするたびに、Zend Framework アプリケーションはゼロから実行されるため、あるリクエストから次のリクエストまで存続する必要があるデータはすべて保存 (永続化) する必要があります。

于 2013-04-17T09:08:06.243 に答える