回答編集履歴

3

誤字修正

2019/04/10 05:12

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  try {
34
34
 
35
- $students = $this->paginate($students_all);
35
+ $data= $this->paginate($data_all);
36
36
 
37
37
  } catch (Cake\Http\Exception\NotFoundException $ex) {
38
38
 

2

ページリセットの tips を追加

2019/04/10 05:11

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -19,3 +19,29 @@
19
19
  セッションから検索条件を取り出して(3-1が動いた場合は検索条件がすべて未設定と同じになる)、検索条件を設定する
20
20
 
21
21
  4. 検索条件(2もしくは3-2で決定している)をセッションに保存する
22
+
23
+
24
+
25
+ 余談:検索条件を変更して飛んできた場合でも、ページネーションの情報も合わせて飛んでくる(クエリパラメータとして)ため、例えばある程度進んだページを表示しているときに検索条件を変えた結果、その検索条件ではそのページ番号まで到達しない場合、ページネーションで例外(NotFoundException)が発生します。
26
+
27
+
28
+
29
+ その場合はページ番号を1にしたURLを作って、そこにリダイレクトするとよいです。
30
+
31
+ ```PHP
32
+
33
+ try {
34
+
35
+ $students = $this->paginate($students_all);
36
+
37
+ } catch (Cake\Http\Exception\NotFoundException $ex) {
38
+
39
+ // 検索条件が変わったなどでページがない場合、ページを1にリセットして呼び直す
40
+
41
+ $redirect_url = preg_replace('/page=\d+/', 'page=1', $this->request->getUrl());
42
+
43
+ $this->redirect($redirect_url);
44
+
45
+ }
46
+
47
+ ```

1

表現をもう少し分かりやすく

2019/04/10 05:11

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  3-1.
14
14
 
15
- 遷移元のURLが表示する予定のURLと一致しない(クエリーパラメータ部分を除いて)なら、セッションに保存した検索条件をクリアする
15
+ 遷移元のURLが表示する予定のURLと一致しない(クエリーパラメータ部分を除いて)なら、セッション上から検索条件を取り除く
16
16
 
17
17
  3-2.
18
18