Drupal 7. Как реорганизовать массив форм - PullRequest
0 голосов
/ 21 ноября 2011

Я создаю мастер из файла примера Drupal и хочу реорганизовать сегменты кода, которые повторяются при настройке таких элементов, как опции и радио.

Я уже пробовал простую функцию, передающую «обычные» и «преференциальные», но не могу найти способ заставить ее работать.

Может кто-нибудь дать мне представление о лучшем способе сделать это?

незафиксированный код, как показано ниже:

function services_wizard_share_capital_classes($form, &$form_state) {

$form['share_classes']['type_of_class'] = array(
'#type' => 'select',
'#title' => t('What type of share will this class be?'),
'#options' => array(
  1 => t('Ordinary'),
  2 => t('Preferential'),
),
);

$form['ordinary']['share_type'] = array(
'#type' => 'item',
'#description' => t("You chose Ordinary Shares"),
'#states' => array(
  'visible' => array(
    ':input[name="type_of_class"]' => array('value' => '1'),
  ),
),
);

$form['preferential']['share_type'] = array(
'#type' => 'item',
'#description' => t("You chose Preferential Shares"),
'#states' => array(
  'visible' => array(
    ':input[name="type_of_class"]' => array('value' => '2'),
  ),
),
);
return $form;
}

1 Ответ

1 голос
/ 21 ноября 2011

Я не уверен, что это лучший способ, но, безусловно, способ рефакторинга вашего кода:

function _services_wizard_share_capital_classes_add_el(&$form, $name, $description, $index) {
  $form[$name]['share_type'] = array(
    '#type' => 'item',
    '#description' => t($description),
    '#states' => array(
      'visible' => array(
        ':input[name="type_of_class"]' => array('value' => "$index"),
      ),
    )
  );
}

function services_wizard_share_capital_classes($form, &$form_state) {
  // Other code

  _services_wizard_share_capital_classes_add_el($form, 'ordinary', 'You chose Ordinary Shares', 1);
  _services_wizard_share_capital_classes_add_el($form, 'preferential', 'You chose Preferential Shares', 2);
  // etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...