1

私はCakePhp 2.2.1を使用していますが、タイトルで尋ねたものを実装するのにいくつか問題があります.いくつかのチュートリアルを見つけましたが、それらのほとんどはcakephp 1.3用であり、他のものは私がやりたいことではありません. 「player_id」を含む「イベント」テーブルがあるため、プレーヤーには多くのイベントがあり、イベントはプレーヤーに属します。

私のイベント追加フォームでは、クックブックに書かれているように進み、選択するプレーヤーのドロップダウン リストを取得しますが、必要なのは、プレーヤーの名前を書き込んで、オートコンプリートの結果から必要なプレーヤーを選択することだけです。また、これらの選手は、その前に私が選んだチームの出身でなければなりません。何か案は?

前もって感謝します。

4

3 に答える 3

0

オートコンプリートの結果は選択したチームに依存するため、ajax を使用する必要があります。jqueryで次のようなもの:

var team = $('#teamdropdown').find(":selected").text();
$.ajax({
  type: "POST",
  url: 'http://domain.com/playersdata',
  data: {'team':team},
  success: function(data){ 
      console.log(data);
      //put data in for example in li list for autocomplete or in an array for the autocomplete plugin
  },
});

そして、プレイヤーデータページ(コントローラーまたはモデル)のケーキでは、このようなものです。

if( $this->request->is('ajax') ) {
    $arr_players = $this->Players->find('all', array('conditions'=>array('team'=>$this->request->data('team')))); //pr($this->request->data) to get all the ajax response
    echo json_encode($arr_players); 
}

また、ヘッダーを json 応答に設定し、$this->layout = null; レイアウト tpl を削除します。

別の解決策は、php で json_encode を使用し、それを js-code のように渡すことです。

<script>var players = <?php echo json_encode($array_players_with_teams); ?>; </script>

このソリューションは、少量のデータに対してのみ興味深いものです。チームとプレーヤーを含む大きなデータベースがある場合、これはお勧めしません。なぜなら、ほんの少しだけ必要な場合に、このすべてのデータをロードする必要があるからです...私はしませんでしたコードをテストする必要はありませんが、先に進むのに役立つはずです...

幸運を!

于 2013-10-25T18:24:54.203 に答える
0

以下のリンクにアクセスしてください。cake2.Xバージョンではajaxヘルパーがなくなったため、関連するすべての機能がJSヘルパークラスに移動したため、これが役立つ場合があります。

http://bakery.cakephp.org/articles/matt_1/2011/08/07/yet_another_jquery_autocomplete_helper_2

また

http://nuts-and-bolts-of-cakephp.com/2013/08/27/cakephp-and-jquery-auto-complete-revisited/

また

http://bakery.cakephp.org/articles/jozek000/2011/11/23/ajax_helper_with_jquery_for_cakephp_2_x

于 2013-10-25T17:49:47.367 に答える