Drupal Commerce自定义签出窗格状态未按预期工作

时间:2014-02-27 02:47:58

标签: drupal drupal-7 drupal-commerce

我正在尝试在自定义结帐窗格中添加有条件显示的字段集。无论状态如何,都会始终显示字段集,与标准表单不同。

例如,在下面的代码中,我希望根据“饥饿”单选按钮的值显示“hungry_fields”字段集。

function hungry_pane_checkout_form($form, &$form_state, $checkout_pane, $order) {

  $pane_form['hungry'] = array(
    '#type' => 'radios',
    '#options' => array('yes' => t('Yes'), 'no' => t('No')),
    '#required' => TRUE,
    '#title' => t('I am hungry')
  );

  $pane_form['hungry_fields'] = array(
    '#title' => 'Hungry',
    '#type' => 'fieldset',
    '#collapsible' => FALSE,
    '#collapsed' => FALSE,
    '#states' => array(
      'visible' => array(
        ':input[name="hungry"]' => array('value' => 'yes'),
      ),
    ),
  );

  return $pane_form;

}

我是Drupal Commerce的新手,所以我完全有可能错过了一些东西。

1 个答案:

答案 0 :(得分:1)

我通过使用带有drupal_get_form()的表单回调来修复此问题,而不是直接将字段添加到数组中。

例如:

function hungry_pane_checkout_form($form, &$form_state, $checkout_pane, $order) {

  $pane_form['form'] = drupal_get_form('hungry_form');

}

function hungry_form($form, &$form_state) {
  ...
}

使用此方法,表单可以正常工作。