Search code examples
checkboxmenudrupal-7form-submitdrupal-modules

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


I am newbie in drupal and i am developing a custom module.Actually i am listing all drupal menu's and their children using fieldset and checkboxes against each menu in a loop.

Here what is i have done so far.

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);
}

Now what the problem is that on form submit,i am getting boolean value against each menu link like 0 or 1 .In this case,i can't gues which link was checked or not.Because of 0 or 1 which doesn't indicate anything.But i want to get menu machine name and link machine name.

I am stuck here.

Can you please guys help or suggest me some other way to complete this thing?

Please help.


Solution

  • pls changes your code first build the options array using the foreach loop you are running

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

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

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

    }

    $form['name']=array(

    '#type'=>'checkbox',

    '#title'=>'any title',

    '#description' => 'any Description',

    '#options' => $options,

    );