さまざまなオプションがありますが、それらはすべて、正確な要件が何であるかによって異なります。
オプション 1: 転送 - 質問から、最初に helloAction を実行してから、thanksAction() を実行して、$a を 10 に設定してから、thanksAction に渡したいようです。そのためには、_forward メソッドを使用できます。URL は変更されませんが、指定されたアクションに実行が渡されます。
public function helloAction() {
$a =10;
$this->_forward("thanks","index", null, array('a' => $a));
}
public function thanksAction() {
$a = $this->_getParam("a");
$b = 20;
$b = $b + $a;
}
Note the _forward() will process all statements in helloAction(), skip its view script, and process all the statements in thanksAction and display its view script.`
オプション 2: 変数 $a をクラス パラメーターとして設定し、アクションで $this を使用してアクセスします。
public function helloAction() {
$this->a =10;
}
public function thanksAction() {
$b = 20;
$b = $b + $this->a;
}
オプション 3: セッションまたは Zend レジストリに値を設定し、必要な場所にアクセスします。
@vascowhiteが彼の回答で指摘したように、GET、POST、またはSESSIONを介さずにアクション間でパラメーターを渡す必要がある状況に遭遇した場合、設計上の問題が発生する可能性があります。できることの 1 つは、次のように、ステートメントを通常の関数に移動して、helloAction から呼び出すことです。
public function helloAction() {
$a =10;
$c = $this->processA($a);
}
protected function processA($a) {
$b = 20;
$b = $b + $a;
return $b;
}