На всякий случай, если у кого-то все еще есть проблемы с этим, я нашел отличное решение, пытаясь выяснить, как это сделать.У меня был список выбора года, и он определял, какие данные должны отображаться в поле автозаполнения.Решение в основном имеет функцию обратного вызова ajax для списка выбора, которая может затем обновить поле автозаполнения дополнительным параметром в URL.В любом случае, это действительно хорошо объяснено в следующей статье.
http://complexdan.com/passing-custom-arguments-drupal-7-autocomplete/
* Внимание, я сходил с ума, пытаясь понять, почему это не сработало, и оказалось, чтоВы не можете иметь одну и ту же форму на странице дважды (мне это нужно, потому что я отображал ее по-разному для мобильных устройств), потому что вы используете идентификатор для обратного вызова ajax.Я добавил дополнительный аргумент для достижения этой цели.В следующем примере он называется uniqueid.
function report_cards_comparison_form($form, &$form_state, $uniqueid) {
$curryear = t('2012');
$form['year_select'] = array(
'#title' => t('School Year'),
'#type' => 'select',
'#options' => array(
'2012' => t('2012'),
'2013' => t('2013'),
'2014' => t('2014'),
'2015' => t('2015'),
),
'#default_value' => $curryear,
'#ajax' => array(
'callback' => 'report_cards_comparison_form_callback',
'wrapper' => $uniqueid,
'progress' => array(
'message' => 'Updating Schools...',
'type' => 'throbber'
),
),
);
$form['choice'] = array(
//'#title' => t('Search By: School Name'),
'#type' => 'textfield',
'#attributes' => array(
'class' => array('school-choice'),
'placeholder' => t('Start Typing School Name...'),
),
'#required' => TRUE,
'#autocomplete_path' => 'reportcards/autocomplete/' . $curryear,
'#prefix' => '<div id="' . $uniqueid . '">',
'#suffix' => '</div>',
);
$form['submit'] = array(
'#type' => 'submit',
'#prefix' => '<div class="submit-btn-wrap">',
'#suffix' => '</div>',
'#value' => t('Search'),
'#attributes' => array('id' => 'add-school-submit'),
);
return $form;
}
/**
* Ajax Callback that updates the autocomplete ajax when there is a change in the Year Select List
*/
function report_cards_comparison_form_callback($form, &$form_state) {
unset($form_state['input']['choice'], $form_state['values']['choice']);
$curryear = $form_state['values']['year_select'];
$form_state['input']['choice'] = '';
$form['choice']['#value'] = '';
$form['choice']['#autocomplete_path'] = 'reportcards/autocomplete/' . $curryear;
return form_builder($form['#id'], $form['choice'], $form_state);
}
, и я могу вызвать форму, выполнив это ...
print render(drupal_get_form('report_cards_comparison_form', 'desktop-schoolmatches'));