2017-05-18 6 views
0

cakePHP 3を使用していますが、コントローラで変数を設定しようとしています。その変数を関数で使用し、新しい値を渡します。機能を受け取ったqueryStringで。コントローラに変数を設定し、何らかの操作をして新しい値を返します。cakePHP 3

これはすべてajaxの呼び出しによるものです。これと意図他は動作しませんでした

public $taskEditor; 

public function checkState(){ 
    if($this->request->query('isFirstTime')){ 
     $value = $this->taskEditor = false; 
    }else{ 
     $value = !$this->taskEditor; 
    } 
    die(json_encode($value)); 
} 

これは、コードと私はコントローラに書いた関数です。変数$taskEditorにはブール値を格納する必要があります。私はまた、グローバル変数を設定しようとし、関数の値をbeforeRender(Event event)に設定しようとしましたが、動作しませんでした。 応答は常にfalseであり、ケーキは$taskEditor変数を認識しません。

助けが必要ですか?

答えて

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を参照してください。

+0

応答しなかった場合、応答は常にfalseです。 –

+0

したがって、$ this-> request-> query( 'isFirstTime')を常にtrueに渡しています。 –

+0

@レーヤン、かなりあなたが設定ではなく、セッションオブジェクトを参照することを意味していた。 –

関連する問題