首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >drupal 7.如何重构表单数组

drupal 7.如何重构表单数组
EN

Stack Overflow用户
提问于 2011-11-21 08:31:42
回答 1查看 91关注 0票数 0

我正在从Drupal示例文件创建一个向导,并希望重构在设置选项和无线电等项时重复的代码段。

我已经尝试了一个传递“普通”和“优先”的简单函数,但找不到一种方法来使其工作。

有人能告诉我做这件事的最佳方法吗?

未分解的代码如下:

代码语言:javascript
运行
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-21 08:53:29

我不确定这是不是最好的方式,但它肯定是重构代码的一种方式:

代码语言:javascript
运行
复制
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...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8206034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档