質問するログイン新規登録

回答編集履歴

2

追記

2016/06/03 09:32

投稿

nnssn
nnssn

スコア1221

answer CHANGED
@@ -1,4 +1,4 @@
1
- ```exit```はPHPスクリプト自体を終了させる言語構造で、それ以降の処理は行われません。
1
+ exitはPHPスクリプト自体を終了させる言語構造で、それ以降の処理は行われません。
2
2
  削除するか、処理を抜ける目的なら```return```に置き換えてみてください。
3
3
 
4
4
  また、PointsController::indexがポイント操作も請け負うのは不自然で
@@ -6,4 +6,69 @@
6
6
  そのほうが問題箇所の特定もしやすくなるはずです。
7
7
 
8
8
  PHP: exit - Manual
9
- [http://php.net/manual/ja/function.exit.php](http://php.net/manual/ja/function.exit.php)
9
+ [http://php.net/manual/ja/function.exit.php](http://php.net/manual/ja/function.exit.php)
10
+
11
+ ###追記 2016-06-03 18:15
12
+ ポイントの合計を求める処理は複数個所で使われそうなので、Pointモデルのメソッドに
13
+ してもいかもしれません。
14
+
15
+ ```php
16
+ class Point extends AppModel {
17
+ //略
18
+ public function sumByUserId($userId) {
19
+ $data = $this->find('all',
20
+ array(
21
+ 'conditions'=> array('user_id' => $userId),
22
+ 'fields' => array('sum(point) as sumPoints'),
23
+ )
24
+ );
25
+ return $data['0']['0']['sumPoints'];
26
+ }
27
+ }
28
+
29
+ //コントローラ側で使う時はこんな感じ
30
+ $userId = $this->Auth->user('id');
31
+ $afterP = $this->Point->sumByUserId($userId);
32
+
33
+ ```
34
+
35
+ ポイント加算アクションの例です。indexアクション内のajax対処部分を
36
+ 抜き出しただけなので、問題の解決につながるかはまだ分かりません。
37
+
38
+ ```php
39
+ public function add() {
40
+ if (! $this->request->is('ajax')) {
41
+ //ajax以外なら例外を投げる
42
+ }
43
+ $userId = $this->Auth->user('id');
44
+ $data = array(
45
+ 'Point' => array(
46
+ 'user_id' => $userId,
47
+ 'point' => $this->request->data['point'],
48
+ )
49
+ );
50
+ $this->Point->create();
51
+ $this->Point->save($data);
52
+
53
+ $afterP = $this->Point->sumByUserId($userId);
54
+ $this->viewClass = 'json';
55
+ $this->set(compact('afterP'));
56
+ $this->set('_serialize','res');
57
+ }
58
+
59
+ ```
60
+
61
+ ポイントの加算に対応するアクションがindexからaddに変わったので
62
+ ajaxのリクエスト先も変更します。
63
+
64
+ ```javascript
65
+ $.ajax({
66
+ type: "POST",
67
+ url: ""
68
+ ```
69
+ urlを /CakePHPディレクトリのパス/points/addに変更
70
+ 環境によってはちょっと違うかもしれません。ブラウザでF12を押してコンソールを出し、
71
+ いろいろ試しながら確認してみてください。
72
+
73
+ addアクションからレスポンスが返ってくるようになれば、
74
+ indexアクション内のajaxに関わるコードは削除してしまっても構いません。

1

誤字脱字の修正

2016/06/03 09:32

投稿

nnssn
nnssn

スコア1221

answer CHANGED
@@ -1,6 +1,5 @@
1
- ```exit```はPHPスクリプト自体を終了させる言語構造なので、
1
+ ```exit```はPHPスクリプト自体を終了させる言語構造で、それ以降の処理は行われません。
2
- それ以降の行は処理されません。削除するか、処理を抜ける目的なら```return```に
2
+ 削除するか、処理を抜ける目的なら```return```に置き換えてみてください。
3
- 置き換えてみてください。
4
3
 
5
4
  また、PointsController::indexがポイント操作も請け負うのは不自然で
6
5
  その部分は別アクションや別コントローラに切り分けたほうが良いかもしれません。