2016-08-26 4 views
0

私はStackOverflowのために新たなんだ、と私はちょうどCakePHPによる周りにプレイし始めました。3.CakePHPの3 - 適切なJSONを返すことができないとき、デバッグモード=真

私は奇妙な問題に遭遇しました:

私はコントローラにajax-request(form submit)を送信しています。私は適切なjson-responseを返すことを期待しています。 config/app.phpでデバッグモードをfalseに設定するとうまく動作しますが、trueに設定されていると、ブラウザのコンソールにエラーメッセージが表示され、responsetextがhtmlに見えます。私は、urlの.json拡張子でアクションを呼び出しています。

私がtrueに最初の応答がfalseに設定され、デバッグモードであり、コンソール、および第二セットのスクリーンショットをリンクした:私は設定/ルートに拡張を有効にしている

enter image description here

。 PHP:

Router::scope('/', function (RouteBuilder $routes) { 
    $routes->extensions(['json', 'xml']); 
(...) 

はここで、コントローラコードです:

public function getUserStats() { 
    $this->log($this->request->data, 'debug'); 

    if (($this->request->is('post'))) { 
     $this->log('getCategories(): Post-request is received.', 'info'); 

     $usersTable = TableRegistry::get('Users'); 
     $q = $usersTable->find('statsByUsers', $this->request->data); 
     $users = $q->all(); 

     // Calculating total amount per user.    
     foreach ($users as $u) { 
      foreach ($u->purchases as $p) { 
       $u->total += $p->total; 
      } 
     } 

     $this->log($users, 'debug'); 

     $this->set('users', $users); 
     $this->set('_serialize', ['users']); 
    } 
} 
ここ

は、モデルのコードです:

public function findStatsByUsers(Query $query, array $options) { 
    debug($options); 
    $options['dates'] = $this->getConvertedDates($options); 
    $query 
     ->contain([ 
      'Purchases' => function($q) use($options) { 
       return $q 
        ->select(['id', 'total' => 'amount * count', 'purchase_date', 'user_id']) 
        ->where(['purchase_date BETWEEN :fromDate AND :toDate',]) 
        ->bind(':fromDate', $options['dates']['fromDate'], 'datetime') // Binds the dates to the variables in where-conditions 
        ->bind(':toDate', $options['dates']['toDate'], 'datetime'); 
      } 
       ]) 
      ->where([ 
       'Users.id IN ' => $options['users'], 
       'Users.active' => true 
     ]); 

    return $query; 
} 

私はあなたが私がこれを解決するのに役立つことができるように、私はあなたに十分な情報を与えてくれた願っています。

CakePHPのバージョン:HTMLは、debug()関数によって生成され出力されるスクリーンショット

<div class="cake-debug-output"> ... 

に見える出力のビットをみる3.3.2

答えて

0

モデルコードをよく調べると、関数の呼び出しを見つける必要があります。それを取り除くと、あなたは良くなるはずです。

btwの場合、<div>の最初の<span>要素にコール元が見つかる可能性があるため、今後も同様の問題が発生した場合は、そのことを確認してください。

0
<?php 

use Cake\Core\Configure; 

// your class ,... 

public function getUserStats() { 

     $this->log($users, 'debug'); 

     Configure::write('debug',false); // DISABLE 

     $this->set('users', $users); 
     $this->set('_serialize', ['users']); 
} 
+0

詳細を編集してください。コード専用と「試してください」の回答は、検索可能なコンテンツが含まれていないため、推奨されません。なぜ誰かが「これを試してみる」べき理由を説明しません。私たちはここで知識のためのリソースとなるよう努力しています。 –

関連する問題