2013-07-08 100 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

太棒了。 –