Один из методов, которые я использовал, - это создание контроллера автозаполнения (или, что еще лучше, его сборка в виде плагина), с помощью метода, подобного следующему:
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');
}
}
/ Views / Autocomplete / fetch.ctp:
<?php echo json_encode($results); ?>
Чтобы получить данные, вы должны использовать следующий URL в своем javascript:
/autocomplete/fetch/name_of_your_model/name_of_your_field/string_to_look_for
например,
/autocomplete/fetch/User/name/rich
Редактировать:
Другой альтернативой является создание метода автозаполнения в контроллере приложения:
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');
}
И вызывается с таким URL-адресом:
/users/autocomplete/name/rich
, который возвращает всех пользователей с адресом электронной почтыНРАВИТСЯ '% rich%'