2013-07-08 156 views
-2

我試圖用cakephp 2.3.7創建一個自動填充文件。 有大量的教程,但其中大部分是蛋糕1.3左右。CakePHP 2.X的自動填充字段

我發現了一些蛋糕2.X像這樣(http://hitechcyberabad.blogspot.com.es/2013/02/autocomplete-in-cakephp-22x-using-jquery.html),但他們都沒有爲我工作。

我不得不編輯教程cities_dropdown.ctp的代碼:

<div class="contacts search form"> 
<fieldset> 
<legend></legend> 
    <?php //paginator->options(array('url' => $this->passedArgs)); 
    $this->Form->create('Contact', array('type'=>'post','action' => 'find')); 

    echo $this->Form->input('city', array(
     'empty' => 'Pick a city', 
     'label' => 'City', 
     'option'=> $cities, 
     'id' => 'city', 
     'autocomplete' => 'on')); 
    echo $this->Form->end(__('Search')); 
    ?> 
    </fieldset> 

</div> 
<script> 
$("#city").autocomplete({ 
    source: "/cake/contacts/find", 
    minLength: 2, 
    delay: 2 
}); 
</script> 

代碼的其餘部分是像教程。

我沒有收到任何錯誤消息,它根本不起作用,我不知道爲什麼。

+1

'源: 「/蛋糕/通訊錄/查找」 '如果沒有以[自動完成期望](http://api.jqueryui.com/au。)的格式返回數據tocomplete /#option-source) - 它不起作用。 – AD7six

+0

我也嘗試過完整的路線,但它仍然不起作用 – Goblinch

+0

不知道這意味着什麼,你沒有提供任何信息。例如url'/ cake/contacts/find?term = abc'返回什麼結果?當你輸入自動完成表單輸入時,你甚至會發送一個請求嗎? – AD7six

回答

3

你調試了ajax調用的響應嗎?使用Chrome的調試工具或Firebug for Firefox來調試請求,或使用http://www.charlesproxy.com/這樣做。

我很確定你的json響應不正確,可能包含錯誤。此外,您鏈接的教程沒有顯示在CakePHP中處理json的最佳方式,請參閱手冊的this page。調試你的回覆並用它更新你的問題。

+0

我只是意識到,我沒有得到任何的AJAX調用,因爲它會引發我一個錯誤信息: 的ReferenceError:$沒有定義 $(「#城市」)自動完成({ – Goblinch

+0

好吧,你去:修正了javascript,在這種情況下,它看起來像jquery根本沒有加載或在你嘗試訪問$的時候加載。 – burzum

+0

我按照教程的說法加載,添加「$ this-> Html->腳本(... )「line in default.ctp 無論如何,我已經加載它,然後我有這個錯誤:TypeError:$(...)。autocomplete不是一個函數 $(」#city「)。autocomplete({ – Goblinch

2

簡單的自動完成代碼

cities.ctp代碼

<? echo $this->Html->css('jquery-ui'); 
    echo $this->Html->script('jquery-1.10.2'); 
    echo $this->Html->script('jquery-ui'); 
    echo $this->Html->css('style.css'); 
?> 
<script> 
    $(function() { 
    var availableTags = [<?=$cities?>]; 
    $("#city_from").autocomplete({ 
     source: availableTags 
    }); 
    }); 
    </script> 

<?php echo $this->Form->input("city_from", array('required'=>'true', 'class'=>'form-control', 'id'=>'city_from', 'placeholder'=>'City or airport', 'label'=>'<span class="opensans size13">Flying from</span>'));?> 

控制器代碼

 //Airport cities string section starts 
     $this->loadModel('AirportCity'); 
     $cities=$this->AirportCity->find('list',array('fields'=>'AirportCity.city_name')); 
     $strCities='"'.implode('","',$cities).'"'; 
     $this->set('cities',$strCities); 
     //Airport cities string section ends 

更多的援助是指http://jqueryui.com/autocomplete/

+0

太棒了。 –