【发布时间】:2016-08-30 07:15:48
【问题描述】:
我尝试在 AppController 中声明一个静态和公共变量,如下所示
class AppController extends Controller {
public static $var = 0;
}
然后访问其子类的控制器中的静态变量。
我的 CTP 文件有多个提交按钮,它们可以更改静态变量的值。
例如。
button A -> $var ++
button B -> $var --
我也尝试过会话并在应用控制器的 beforefilter 功能中启动它。 仍然在多次提交时,再次重置会话变量。
class AppController extends Controller {
public function beforeFilter() {
parent::beforeFilter();
$this->Session->write('var', 0);
}
}
在这两种情况下(静态变量或会话),静态变量只能是 +1、0 或 -1。似乎 AppController 是在页面刷新时加载的。 我真正想要的是在多次按下按钮后静态变量可以是 + 或 - 超过 1,并且静态变量仅在关闭浏览器后才会重置。
【问题讨论】:
-
听起来你需要将它存储在会话中,而不是作为类变量
-
如果您想使用该静态变量,请在它的特定控制器(基于 ctp)中使用,而不是在
AppController中使用。 2.最好创建一个Session变量并相应地更新它。 -
我尝试了会话并在应用控制器中启动它。仍在刷新时,会话变量再次重置。
-
在我看来,您每次都在重置会话变量。如果您需要它存在,但又不想在每次执行 if(!$this->Session->get('var')) { $this->Session->write('var ', 0);这样它只会在第一次创建它,但之后它就不管它了。会话应该可以正常工作。
-
是 cake2 还是 cake3?
标签: php cakephp model static controller