首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有watchdog_severity_levels()的复选框

带有watchdog_severity_levels()的复选框
EN

Stack Overflow用户
提问于 2015-03-06 09:59:29
回答 2查看 85关注 0票数 0

我有这样的代码,它可以让我拿出一些带有看门狗严重程度的复选框:

代码语言:javascript
复制
  /**
   * 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设置为:

代码语言:javascript
复制
$key = array_filter(variable_get($key,array()));

我认为这个集合是错误的,因为drupal让我出了错误。在这组$key之后,我用下面的foreach语句调用它,有人能帮我做这件事吗?

代码语言:javascript
复制
foreach ($key as $value) {
  if ($value == 'warning') {
    blablblablabla....
  }
  elseif ($value == 'notice') {
    blablablbalbal....
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-06 20:57:24

使用您的逻辑,您可以存储以下键severity_errors0severity_errors1severity_errors2,.在variable表中,因为您的foreach的$severity键只是索引。

是否更容易将所选严重级别的数组存储为变量表中的一个条目?

下面是一些为您工作的示例代码:

代码语言:javascript
复制
// 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);

现在,要检索所选的严重性级别,您可以执行如下操作:

代码语言:javascript
复制
// 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
}
票数 1
EN

Stack Overflow用户

发布于 2015-03-06 19:28:24

您需要添加一些调试,以确定它到底在哪里出错。建议使用dpm()在一些关键阶段检查代码,如1)在构建表单后,2)当您将数组分配给$key,3)在启动最后的foreach循环之前,这样您就可以精确地指出它出错的地方并解决它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28896332

复制
相关文章

相似问题

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