自动完成而不使用回调

时间:2011-05-28 23:04:40

标签: drupal drupal-6 autocomplete

我想使用链接到外部源的自动完成字段来获取自动完成数据。 Drupal似乎拒绝在Drupal中无法访问的所有autocomplete_paths。任何想法如何规避这个问题?表单字段如下所示:

$form['business_city'] = array(
    '#type' => 'textfield',
    '#size' => 30,
    '#title' => t('city'),
    '#autocomplete_path' => '_/city?=',
    '#default_value' => $userProfile->field_address_business_city[0]['value'],
);
出于性能原因,在Drupal内无法访问

_ / city。该脚本将Drupal引导至会话级以检查有效登录。

更新

如果我通过手动将所需的标记附加到字段来创建自动完成字段,那么它可以正常工作,但维护起来很难:

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

2 个答案:

答案 0 :(得分:3)

您可以确保查询“/ _ / city?n =”的路径是有效的menu_hook项目,而不是黑客攻击。这样它将验证theme_textfield()内的drupal_valid_path()。在菜单钩子函数回调中,您可以将请求转发到外部数据源。

答案 1 :(得分:2)

如果自动完成路径是有效(内部)路径,则Drupal 6会在theme_textfield()中进行验证。

因此,除非重写该主题函数,否则无法解决此问题。