автозаполнение CakePHP 2.0 - PullRequest
1 голос
/ 21 ноября 2011

Начиная с CakePHP 1.3, помощник Ajax устарел, никто не может использовать $ ajax-> Autocomplete ..

Я использую Cake 2.0 и хочу реализовать динамическое автозаполнение (динамическая таблица, динамическое поле), кажетсяневозможно с текущими учебными пособиями.

Что является ближайшей альтернативой $ ajax-> autoComplete в cakephp 2.0?

1 Ответ

6 голосов
/ 21 ноября 2011

Один из методов, которые я использовал, - это создание контроллера автозаполнения (или, что еще лучше, его сборка в виде плагина), с помощью метода, подобного следующему:

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%'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...