我有这样的代码,它可以让我拿出一些带有看门狗严重程度的复选框:
/**
* Checkbox for errors, alerts, e.t.c
*/
foreach (watchdog_severity_levels() as $severity => $description) {
$key = 'severity_errors' . $severity;
$form['severity_errors'][$key] = array(
'#type' => 'checkbox',
'#title' => t('@description', array('@description' => drupal_ucfirst($description))),
'#default_value' => variable_get($key, array()),
);
return system_settings_form($form);
}我在代码中将这个$key设置为:
$key = array_filter(variable_get($key,array()));我认为这个集合是错误的,因为drupal让我出了错误。在这组$key之后,我用下面的foreach语句调用它,有人能帮我做这件事吗?
foreach ($key as $value) {
if ($value == 'warning') {
blablblablabla....
}
elseif ($value == 'notice') {
blablablbalbal....
}
}发布于 2015-03-06 20:57:24
使用您的逻辑,您可以存储以下键severity_errors0,severity_errors1,severity_errors2,.在variable表中,因为您的foreach的$severity键只是索引。
是否更容易将所选严重级别的数组存储为变量表中的一个条目?
下面是一些为您工作的示例代码:
// Retrieve store variable
$severity_levels = variable_get('severity_levels', array());
// Declare empty options array
$severity_options = array();
// Loop through each severity level and push to options array for form
foreach (watchdog_severity_levels() as $severity) {
$severity_options[$severity] = t('@description', array(
'@description' => drupal_ucfirst($severity),
));
}
// Generate checkbox list for given severity levels
$form['severity_levels'] = array(
'#type' => 'checkboxes',
'#options' => $severity_options,
'#default_value' => array_values($severity_levels),
);
return system_settings_form($form);现在,要检索所选的严重性级别,您可以执行如下操作:
// Retrieve store variable
$severity_levels = variable_get('severity_levels', array());
foreach ($severity_levels as $level => $selected) {
if (!$selected) {
// Severity level is not selected
continue;
}
// Severity level is selected, do your logic here
// $level
}发布于 2015-03-06 19:28:24
您需要添加一些调试,以确定它到底在哪里出错。建议使用dpm()在一些关键阶段检查代码,如1)在构建表单后,2)当您将数组分配给$key,3)在启动最后的foreach循环之前,这样您就可以精确地指出它出错的地方并解决它。
https://stackoverflow.com/questions/28896332
复制相似问题