Автозаполнение в текстовом поле «Неограниченно»?

Я добавляю встроенную функцию автозаполнения в Drupal, используя hook_form_alter, чтобы установить #autocomplete_path следующим образом:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  ...
  $form['field_company']['und'][0]['value']['#autocomplete_path'] = 'autocomplete/company';
  ...
}

Это отлично работает для текстового поля, где количество значений равно 1, но не работает, когда количество значений не ограничено. Я предполагаю, что это как-то связано с полем, добавляемым через Javascript. Есть ли еще один хук, к которому я могу подключиться, чтобы добавить #autocomplete_path?

РЕДАКТИРОВАТЬ: Drupal 6.

2 голоса | спросил SomethingOn 17 Jpm1000000pmTue, 17 Jan 2012 22:24:33 +040012 2012, 22:24:33

2 ответа


0

Вы должны повторить дельту своего поля; здесь вы затрагиваете только $form['field_company']['und']__[0]__, not $form['field_company']['und']__[n]__

Оставайтесь в своем hook_form_alter, но повторяйте его каждый раз, когда ваш $form перестраивается:

    foreach($form['field_company']['und'] as $delta => $field) {
        if(is_array($field) && is_numeric($delta)) {
            $form['field_company']['und'][$delta]['value']['#autocomplete_path'] = 'autocomplete/company';
        }
    }
ответил Gregory Kapustin 2 Maypm13 2013, 16:33:11
0

При изменении поля с кардинальным значением мне нравится использовать #process . По сути, вы определяете функцию, которая будет вызываться при каждой обработке поля в форме, в том числе при добавлении через javascript.

В вашем случае код может выглядеть следующим образом:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  ...
  $form['field_company'][$form['field_company']['#language']]['#process'][] = 'field_company_process';  
  ...
}

function field_company_process($element, &$form_state, $complete_form) {
  $element[$element['#max_delta']]['value']['#autocomplete_path'] = 'autocomplete/company';
  return $element;
}
ответил Evil E 22 Jam1000000amWed, 22 Jan 2014 05:29:36 +040014 2014, 05:29:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132