Cakephp2 で検索内容を格納したセッションが消える
Cakephp2 で DB の中身を検索し、検索結果の一覧を表示するページを作成しています。
データ数が多いのでページネーションするようにしているのですが、検索後他のページに移ると検索状態が維持できずに消えてしまいます。ただ、そこでもう一度検索し直すか、現在のページを更新してから検索し直すと、検索状態を維持したままページを遷移することができます。
コードは以下の通りです。
<?php
class SampleController extends AppController {
public $helpers = ["Html", "Form", 'UploadPack.Upload', "Session"];
public $paginate = [
"limit" => 10,
"sort" => "created",
"direction" => "desc"
];
public function isAuthorized($user) {
return true;
}
//トップページ
public function index() {
$conditions = [];
debug(Router::url(NULL, true));
//検索条件が送信されたら
if ($this->request->is("POST")) {
if (!empty($this->data["search"]["allSecand"])) {
$searchSum = $this->data["search"]["all"] . " " . $this->data["search"]["allSecand"];
} else {
$searchSum = $this->data["search"]["all"];
}
//それぞれのインプットに合わせた検索用SQL文を発行
if ($searchSum) {
$conditions[] = $this->Sample->simpleSearch($searchSum);
}
//古いセッション削除
if ($this->Session->check("conditions")) {
$this->Session->delete("conditions");
debug("conditions セッション削除");
}
if ($this->Session->check("search")) {
$this->Session->delete("search");
debug("search セッション削除");
}
//ページネーション後も検索条件を引き継ぐためにセッションで保持
$this->Session->write("conditions", $conditions);
//検索で入力された値をセッションで保持
$this->Session->write("search", $this->request->data);
debug("セッション書き込み");
debug($_SESSION);
//検索ボタンを押されたら必ず1ページ目から表示
$this->request->params["named"]["page"] = 1;
} else {
if (preg_match("/domein.com\/$/", Router::url(NULL, true))) {
debug("セッション削除開始");
if ($this->Session->check("conditions")) {
$this->Session->delete("conditions");
debug("conditions セッション削除");
}
if ($this->Session->check("search")) {
$this->Session->delete("search");
debug("search セッション削除");
}
CakeSession::start();
debug($_SESSION);
} else {
debug("セッション読み込み");
debug($_SESSION);
$conditions = $this->Session->read("conditions");
$this->request->data = $this->Session->read("search");
}
}
$data = $this->paginate($conditions);
$this->set("samples", $data);
}
消えるセッションは検索状態を格納している conditions と search だけで、ほかのセッションは残っています。
また、ローカル環境だと普通に動作するので、もしかしたらサーバー側の設定かもしれません。
Apache のバージョンは 2.4 、PHP のバージョンは 5.6 です。
どこを直せば検索状態を維持したままページ遷移できるでしょうか?よろしくお願いします。