Cakephpでオートコンプリート機能を実装したいと思っていますが、
全く実装できない状況です。
具体的な内容を記載していませんでした。
下記サイトを参考して、
http://wataame.sumomo.ne.jp/archives/7190
1.jQueryとjQuery UIを読み込みました。
2.フォームの作成
<?php echo $this->Form->input('name', array( 'type' => 'text', 'id' => 'autocomplete', )); ?>
3.Javascriptの読み込み
<script> $(function() { var availableTags = [ "ActionScript", "AppleScript", "Asp", "BASIC", "C", "C++", "Clojure", "COBOL", "ColdFusion", "Erlang", "Fortran", "Groovy", "Haskell", "Java", "JavaScript", "Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme" ]; $("#autocomplete").autocomplete({ source: availableTags, autoFocus: true, delay: 500, minLength: 1 }); }); </script>
1~3までの手順を実施して問題なく、指定のフォームに
Javascriptのリストがフォームの下に表示され選択できるようになりました。
4.Javascriptの変更
3.の内容を下記に変更
<script type="text/javascript"> $(function(){ $('#autocomplete').autocomplete({ source: '<?php echo $this->Html->url(array('controller' => 'testA', 'action' => 'autocomplete')); ?>', autoFocus: true, delay: 500, minLength: 2 }); }) </script>
**5.コントローラーの作成 **
こちらはこのURLを参考にしました。
https://teratail.com/questions/18856
public
1 $this->loadModel('testB'); 2 $field = 'name'; 3 $term = $this->params['url']['term']; 4 5 $condition = array(); 6 if(!empty($term)){ 7 $condition = array('testB.'.$field.' like' => "%".$term."%"); 8 } 9 10 $query = array( 11 'fields' => array($field), 12 'conditions' => $condition, 13 'limit' => 10, 14 'order' => array('testB.'.$field => 'ASC'), 15 'group' => $field, 16 ); 17 18 $data = array(); 19 $items = $this->testB->find('all', $query); 20 21 foreach ($items as $item) { 22 $cnt = array_push($data, $item['testB'][$field]); 23 } 24 25 // JSONデータのみを返す 26 $this->viewClass = 'Json'; 27 $this->set(compact('data')); 28 $this->set('_serialize', 'data'); 29}
jsonの値を確認。
下記のURLから
http://localhost:8888/cakephp/test/autocomplete?term=
このデータが返ってきました。
[
"aaaaaa",
"test",
]
データベースの中身を取得できている。と思います。。おそらく。。。
6.フォームの確認
指定したフォームにaと入れてもリストが表示されません。
どこかで値がちゃんと渡されていないのでしょうか。
ご指摘していただけますでしょうか。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー