0

form_alter に以下を追加する方法を知っている人はいますか? 現在、php values コマンドを使用して sql から入力される 2 つの整数 cck フィールドがあります。

1 つのフィールドは make 用で、もう 1 つのフィールドはモデル用です。メーカーとモデルはどちらも独自のノード タイプです。モデルには作成するノード参照があります。

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 に答える