复选框值是布尔值而不是自定义模块 drupal 中菜单 link 的机器名称

Checkbox values are boolean instead of machine name of menu link in custom module drupal

我是 drupal 的新手,我正在开发一个自定义 module.Actually 我正在列出所有 drupal 菜单及其子菜单,并在循环中针对每个菜单使用字段集和复选框。

这是我到目前为止所做的。

function hide_menu_item_configuration_form($node, &$form_state){

$form = array();

$form['markup'] = array(
'#type'=>'markup',
'#markup'=>t('<p>Select a menu.</p>'),
);

$menus = menu_get_menus($all = TRUE);
foreach ($menus as $key => $value) {
$form['menus'][$value] = array(
  '#type'=>'fieldset',
  '#title'=>t($value),
  '#collapsible' => TRUE,
  '#collapsed' => TRUE,
);
$menu_items = menu_load_links($key);
 foreach ($menu_items as $key => $values) {
   $form['menus'][$value][$values['link_title']] = array(
    '#type'  => 'checkbox',
    '#title' => t($values['link_title']),
    '#' => t($values['link_title']),
    '#default_value' => 1
    );
 }
}
$form['config_submit'] = array(
'#type'=>'submit',
'#value'=>'Save configuration',
);
return $form;
}

function hide_menu_item_configuration_form_submit(&$form, &$form_state)     { 
 //here i see values
dsm($form_state);
}

现在的问题是,在提交表单时,我得到了每个菜单 link 的布尔值,例如 0 或 1。在这种情况下,我无法猜测检查了哪个 link或 not.Because 的 0 或 1 不表示 anything.But 我想获取菜单机器名称和 link 机器名称。

我卡在这里了。

你们能帮忙或建议我用其他方法来完成这件事吗?

请帮忙。

请更改您的代码,首先使用您的 foreach 循环构建选项数组 运行

$options = array(); $menu_items = menu_load_links($key);

foreach ($menu_items as $key => $values) {

$options[$values['link_title']] = $values['link_title'];

}

$表格['name']=数组(

'#type'=>'checkbox',

'#title'=>'any title',

'#description' => 'any Description',

'#options' => $options,

);