Kun*_*tri 1 cakephp autocomplete
自CakePHP 1.3以来,Ajax帮助程序已被弃用,无法用户$ ajax-> Autocomplete ..
我使用Cake 2.0,并希望实现动态自动完成(动态表,动态字段),这似乎是不可能的当前教程可用.
cakephp 2.0中$ ajax-> autoComplete最接近的替代品是什么?
我使用的一种方法是创建一个自动完成控制器(或者更好,然后将其构建为插件),方法类似于:
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%'
| 归档时间: |
|
| 查看次数: |
3146 次 |
| 最近记录: |