在控制器中设置变量,进行一些操作并返回一个新值cakePHP 3

时间:2017-05-18 19:13:02

标签: cakephp cakephp-3.0

我正在使用cakePHP 3而我正在尝试在控制器中设置变量,在函数中使用该变量然后传递新值取决于所接收函数的public $taskEditor; public function checkState(){ if($this->request->query('isFirstTime')){ $value = $this->taskEditor = false; }else{ $value = !$this->taskEditor; } die(json_encode($value)); }

这一切都是通过ajax的电话。

这是我在控制器中编写的代码和函数:

$taskEditor

这和其他人的意图没有用。变量beforeRender(Event event)必须存储一个布尔值。我也尝试设置一个全局变量并在函数$taskEditor中设置值,但是没有用。 响应总是错误的和/或蛋糕不会识别{{1}}变量。

任何帮助?

1 个答案:

答案 0 :(得分:1)

每次访问checkState()时,控制器都会初始化,因此会重置$taskEditor

您可以在会话中写下此值:

public function checkState(){
    $session = $this->request->session();
    if ( $this->request->query('isFirstTime') == 'true' ) {
        $taskEditor = false;
        $session->write('taskEditor', $taskEditor);
    } else {
        $taskEditor = $session->read('taskEditor');
        if ( is_null($taskEditor) ) {
            $taskEditor = true;
        }
        $session->write('taskEditor', !$taskEditor);
    }
    die(json_encode($taskEditor));
}

请参阅Reading & Writing Session Data