0

カスタム チェックアウト ペインに条件付きで表示されるフィールドセットを追加しようとしています。フィールドセットは、標準フォームとは異なり、状態に関係なく常に表示されます。

たとえば、以下のコードでは、"hungry" ラジオ ボタンの値に基づいて "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 を初めて使用するので、何か不足している可能性は十分にあります。

4

1 に答える 1

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) {
  ...
}

この方法を使用すると、フォームは正しく機能します。

于 2014-02-28T04:46:17.963 に答える