【问题标题】:Drupal: Add onchange code to option_widgets in form_alter?Drupal:将 onchange 代码添加到 form_alter 中的 option_widgets?
【发布时间】:2010-01-29 13:02:10
【问题描述】:

有人知道如何将以下内容添加到 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')

谢谢 - 马特

【问题讨论】:

    标签: drupal alter


    【解决方案1】:

    我想我已经突破了。

    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 现在出现在渲染代码中。

    【讨论】:

    • 当时不让我这么做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多