autoComplete CakePHP 2.0

Kun*_*tri 1 cakephp autocomplete

自CakePHP 1.3以来,Ajax帮助程序已被弃用,无法用户$ ajax-> Autocomplete ..

我使用Cake 2.0,并希望实现动态自动完成(动态表,动态字段),这似乎是不可能的当前教程可用.

cakephp 2.0中$ ajax-> autoComplete最接近的替代品是什么?

Ric*_*ome 6

我使用的一种方法是创建一个自动完成控制器(或者更好,然后将其构建为插件),方法类似于:

class AutocompleteController extends AppController {

    public function fetch($model, $field, $query) {

       $this->loadModel($model);

       $results = $this->$model->find('all', array(
           'conditions'=>array(
               $model . "." . $field . " LIKE '%" . $query . "%'"
           )
       ));

       $this->set(compact('results');

    }

}
Run Code Online (Sandbox Code Playgroud)

/Views/Autocomplete/fetch.ctp:

<?php echo json_encode($results); ?>
Run Code Online (Sandbox Code Playgroud)

要获取数据,您可以在javascript中使用以下网址:

/autocomplete/fetch/name_of_your_model/name_of_your_field/string_to_look_for
Run Code Online (Sandbox Code Playgroud)

例如

/autocomplete/fetch/User/name/rich
Run Code Online (Sandbox Code Playgroud)

编辑:

另一种方法是在app控制器中创建自动完成方法:

public function autocomplete($field, $query) {

   $model = $this->{$this->$modelClass}->alias;

   $results = $this->$model->find('all', array(
       'conditions'=>array(
           $model . "." . $field . " LIKE '%" . $query . "%'"
       )
   ));

   $this->set(compact('results');

}
Run Code Online (Sandbox Code Playgroud)

并使用这样的URL调用:

/users/autocomplete/name/rich
Run Code Online (Sandbox Code Playgroud)

这将返回所有用户的电子邮件地址LIKE'%rich%'