我正在尝试做输入建议。在它的自我中没有什么特别的,JqueryUI能够开箱即用......
我遇到麻烦的方法是为jqueryUI提供一份你需要提供的可能建议列表......我使用的表是将Big do作为一个整体转储到视图中...但我无法想象如何在用户开始输入字段时解析该值,并向他提供前100个建议... 有了这个,我希望减少数据库的负载并加快页面的加载时间,因为每次用户需要表单时,CakePHP都没有将整个表打包到视图中!
我到目前为止的守则:(非常感谢所有帮助之手!thx ......) 控制器:
<?php
App::uses('AppController', 'Controller');
class LocationsManagerController extends AppController {
public $helpers = array('Js');
public $components = array('RequestHandler');
public function index() {
}
public function updateSuggestions() {
/*
* place passed Value into $locationName
*/
$this -> loadModel('Location');
if ($this -> RequestHandler -> isAjax()) {
$this -> Location -> find('list',array(
'limit'=>'100',
'conditions' => array('Location.name' => $locationName),
));
$this->render('suggestions');
}
/*
* tell JqueryUI to update it's suggestion Array...
*/
}
} ?&GT;
查看: index.ctp
<div id="suggestions">
<!--
array of possible Options...
-->
</div>
<?php
echo $this -> Html -> script('jqueryUI', FALSE);
echo $this -> Form -> create('locationsmanager');
echo $this -> Form -> input('Location', array('id' => 'location'));
echo $this -> Form -> submit('Send');
$updateSuggestions = $this -> Js -> get('#location') -> event(
#@formatter:off ;
'change',
$this->Js->request(
array(
'action' => 'foo',
'data' => $form,
),
array(
'async' => true,
'update' => '#suggestions'
)
)
#@formatter:on ;
);
?>
这是最好的方法吗?谢谢你的帮助!!
答案 0 :(得分:0)
当您使用jueryUI时,您可以使用自动完成功能:
http://jqueryui.com/autocomplete/#remote
然后在你的控制器中你必须创建一个动作,返回你的建议的json列表。