0

有谁知道如何将以下内容添加到 form_alter?目前我有两个整数 cck 字段,它们是使用 php values 命令从 sql 填充的。

一个字段用于制造,另一个用于模型。品牌和型号都是它们自己的节点类型。模型有一个要制作的节点引用。

我想在 Make 下拉菜单(CCK: INTEGER : SELECT)上做的是改变,修改模型字段的内容。我已经制作了自己的定制表单,但它太实用了,想要使用基本的 drupal 节点编辑表单。

理想情况下,我希望能够将其传递到混合中。'#attributes' => 数组 ('onchange'=> 'populatemodels(this,\'edit-field-model\')')

有谁知道在代码中执行此操作的方法?

在我的 form_alter 中,添加该属性不会在代码中产生任何 onchanges:

#field_make (Array, 14 elements)

    *
      #type (String, 20 characters ) optionwidgets_select
    *
      #default_value (Array, 1 element)
          o
            0 (Array, 1 element)
                +
                  value (String, 1 characters ) 8
    *
      #required (String, 1 characters ) 1
    *
      #columns (Array, 1 element)
          o
            0 (String, 5 characters ) value
    *
      #title (String, 4 characters ) Make
    *
      #description (String, 0 characters )
    *
      #delta (Integer) 0
    *
      #field_name (String, 10 characters ) field_make
    *
      #type_name (String, 3 characters ) car
    *
      #tree (Boolean) TRUE
    *
      #weight (String, 2 characters ) -1
    *
      #access (Boolean) TRUE
    *
      #count (Integer) 9
    *
      #attributes (Array, 1 element)
          o
            onchange (String, 39 characters ) populatemodels(this,'edit-field-model')

谢谢 - 马特

4

1 回答 1

0

我想我已经突破了。

cck/options_widgets.module optionwidgets_select_process($element, $edit, &$form_state, $form) {

此外,在我的 form_alter 代码中,我添加了

drupal_add_js('sites/all/modules/adaptive/adaptive.js');

其中包含 populatemodels 脚本

我修改了这段代码,以便将属性传递到下一步

$element[$field_key] = array(
    '#type' => 'select',
    '#title' => $element['#title'],
    '#description' => $element['#description'],
    '#required' => isset($element['#required']) ? $element['#required'] : $field['required'],
    '#multiple' => isset($element['#multiple']) ? $element['#multiple'] : $field['multiple'],
    '#options' => $options,
    '#default_value' => isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : NULL,
    >>> '#attributes' => isset($element['#attributes']) ? $element['#attributes'] : NULL, <<
  );

通过添加 '#attributes' => isset($element['#attributes']) ?$element['#attributes'] : NULL,onchange 现在出现在呈现的代码中。

于 2010-01-29T13:33:50.870 回答