cakePHP动态调整输入Jquery UI建议如何?

时间:2014-01-31 17:05:57

标签: jquery ajax cakephp

我正在尝试做输入建议。在它的自我中没有什么特别的,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 ;
);
?>

这是最好的方法吗?谢谢你的帮助!!

1 个答案:

答案 0 :(得分:0)

当您使用jueryUI时,您可以使用自动完成功能:

http://jqueryui.com/autocomplete/#remote

然后在你的控制器中你必须创建一个动作,返回你的建议的json列表。