Автозаполнение без использования обратного вызова - PullRequest
3 голосов
/ 29 мая 2011

Я хочу использовать поля автозаполнения, которые ссылаются на внешний источник для своих данных автозаполнения.Drupal, похоже, отказывается от всех autocomplete_paths, которые недоступны в Drupal.Есть идеи, как обойти эту проблему?Поле формы выглядит так:

$form['business_city'] = array(
    '#type' => 'textfield',
    '#size' => 30,
    '#title' => t('city'),
    '#autocomplete_path' => '_/city?=',
    '#default_value' => $userProfile->field_address_business_city[0]['value'],
);

_ / city недоступно в Drupal по соображениям производительности.Сценарий загружает Drupal до уровня сеанса для проверки правильности имени входа.

ОБНОВЛЕНИЕ:

Если я создаю поле автозаполнения, добавляя необходимую разметку вручнуюполе это работает, но поддерживать его неудобно:

'#attributes' => array('class' => 'form-autocomplete'),
'#suffix' => '<input type="hidden" disabled="disabled" value="/_/city?n=" id="edit-private-city-autocomplete" class="autocomplete">',

Ответы [ 2 ]

3 голосов
/ 29 мая 2011

Вместо взлома вы можете убедиться, что путь, который вы запрашиваете "/ _ / city? N =", является допустимым пунктом menu_hook.Таким образом, он будет проверяться на drupal_valid_path () внутри theme_textfield ().Из обратного вызова функции ловушки меню вы можете переслать запрос на внешний источник данных.

2 голосов
/ 29 мая 2011

Drupal 6 проверяется в theme_textfield () , если путь автозаполнения является допустимым (внутренним) путем.

Таким образом, вы не можете обойти это, если не переопределите функцию темы.

...