有不同的选择,所有这些都取决于您的确切要求:
选项 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 的情况,那么您可能会遇到一些设计问题。您可以做的一件事是将语句移动到常规函数并从 helloAction 调用它,例如:
public function helloAction() {
$a =10;
$c = $this->processA($a);
}
protected function processA($a) {
$b = 20;
$b = $b + $a;
return $b;
}