回答編集履歴

2

追記

2016/06/03 09:32

投稿

nnssn
nnssn

スコア1221

test CHANGED
@@ -1,4 +1,4 @@
1
- ```exit```はPHPスクリプト自体を終了させる言語構造で、それ以降の処理は行われません。
1
+ exitはPHPスクリプト自体を終了させる言語構造で、それ以降の処理は行われません。
2
2
 
3
3
  削除するか、処理を抜ける目的なら```return```に置き換えてみてください。
4
4
 
@@ -15,3 +15,133 @@
15
15
  PHP: exit - Manual
16
16
 
17
17
  [http://php.net/manual/ja/function.exit.php](http://php.net/manual/ja/function.exit.php)
18
+
19
+
20
+
21
+ ###追記 2016-06-03 18:15
22
+
23
+ ポイントの合計を求める処理は複数個所で使われそうなので、Pointモデルのメソッドに
24
+
25
+ してもいかもしれません。
26
+
27
+
28
+
29
+ ```php
30
+
31
+ class Point extends AppModel {
32
+
33
+ //略
34
+
35
+ public function sumByUserId($userId) {
36
+
37
+ $data = $this->find('all',
38
+
39
+ array(
40
+
41
+ 'conditions'=> array('user_id' => $userId),
42
+
43
+ 'fields' => array('sum(point) as sumPoints'),
44
+
45
+ )
46
+
47
+ );
48
+
49
+ return $data['0']['0']['sumPoints'];
50
+
51
+ }
52
+
53
+ }
54
+
55
+
56
+
57
+ //コントローラ側で使う時はこんな感じ
58
+
59
+ $userId = $this->Auth->user('id');
60
+
61
+ $afterP = $this->Point->sumByUserId($userId);
62
+
63
+
64
+
65
+ ```
66
+
67
+
68
+
69
+ ポイント加算アクションの例です。indexアクション内のajax対処部分を
70
+
71
+ 抜き出しただけなので、問題の解決につながるかはまだ分かりません。
72
+
73
+
74
+
75
+ ```php
76
+
77
+ public function add() {
78
+
79
+ if (! $this->request->is('ajax')) {
80
+
81
+ //ajax以外なら例外を投げる
82
+
83
+ }
84
+
85
+ $userId = $this->Auth->user('id');
86
+
87
+ $data = array(
88
+
89
+ 'Point' => array(
90
+
91
+ 'user_id' => $userId,
92
+
93
+ 'point' => $this->request->data['point'],
94
+
95
+ )
96
+
97
+ );
98
+
99
+ $this->Point->create();
100
+
101
+ $this->Point->save($data);
102
+
103
+
104
+
105
+ $afterP = $this->Point->sumByUserId($userId);
106
+
107
+ $this->viewClass = 'json';
108
+
109
+ $this->set(compact('afterP'));
110
+
111
+ $this->set('_serialize','res');
112
+
113
+ }
114
+
115
+
116
+
117
+ ```
118
+
119
+
120
+
121
+ ポイントの加算に対応するアクションがindexからaddに変わったので
122
+
123
+ ajaxのリクエスト先も変更します。
124
+
125
+
126
+
127
+ ```javascript
128
+
129
+ $.ajax({
130
+
131
+ type: "POST",
132
+
133
+ url: ""
134
+
135
+ ```
136
+
137
+ urlを /CakePHPディレクトリのパス/points/addに変更
138
+
139
+ 環境によってはちょっと違うかもしれません。ブラウザでF12を押してコンソールを出し、
140
+
141
+ いろいろ試しながら確認してみてください。
142
+
143
+
144
+
145
+ addアクションからレスポンスが返ってくるようになれば、
146
+
147
+ indexアクション内のajaxに関わるコードは削除してしまっても構いません。

1

誤字脱字の修正

2016/06/03 09:32

投稿

nnssn
nnssn

スコア1221

test CHANGED
@@ -1,8 +1,6 @@
1
- ```exit```はPHPスクリプト自体を終了させる言語構造なので、
1
+ ```exit```はPHPスクリプト自体を終了させる言語構造で、それ以降の処理は行われません。
2
2
 
3
- それ以降の行は処理されません。削除するか、処理を抜ける目的なら```return```に
3
+ 削除するか、処理を抜ける目的なら```return```に置き換えてみてください。
4
-
5
- 置き換えてみてください。
6
4
 
7
5
 
8
6