复选框值是布尔值而不是自定义模块 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,
);
我是 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,
);