2015-05-11 4 views
1

я есть здесь некоторые флажков с значениями watchdog_severity:я хочу изменить флажков

// Form for the severity checkboxes. 
    $blabla_severity_levels = variable_get('blabla_severity_levels', array()); 

    // Declare empty options array. 
    $blabla_severity_options = array(); 

    // Loop through each severity level and push to options array for form. 
    foreach (watchdog_severity_levels() as $number_select => $severity) { 
     $blabla_severity_options[$severity] = check_plain(drupal_ucfirst(
     $severity)); 
    } 

    // Generate checkbox list for given severity levels. 
    $blabla_form['blabla_severity'] = array(
     '#type'  => 'fieldset', 
     '#title'  => t('Select the severity.'), 
     '#collapsible' => TRUE, 
     '#collapsed' => TRUE, 
    ); 

    $blabla_form['blabla_severity']['blabla_severity_levels'] = array(
     '#type'   => 'checkboxes', 
     '#title'   => t('Type of log messages'), 
     '#options'  => $blabla_severity_options, 
     '#default_value' => array_values($blabla_severity_levels), 
     '#required'  => TRUE, 
    ); 

    return system_settings_form($blabla_form); 

Хорошо, теперь я называю в моей функции, severity_levels:

function blabla_check_checkboxes() { 
    $severity_levels = variable_get('blabla_severity_levels', array()); 
} 

теперь, если SELCT только информация CheckBox и экспортировать значения $severity_levels он получает меня что-то вроде этого:

info (String, 4 characters) info 
    emergency (Integer) 0 
    alert (Integer) 0 
    critical (Integer) 0 
    error (Integer) 0 
    warning (Integer) 0 
    notice (Integer) 0 
    debug (Integer) 0 

бушель т я хочу экспортировать что-то подобное в моей функции blabla_check_checkboxes():

 info (Integer) 6 
     emergency (Integer) 0 
     alert (Integer) 0 
     critical (Integer) 0 
     error (Integer) 0 
     warning (Integer) 0 
     notice (Integer) 0 
     debug (Integer) 0 

где 6 является номер Друпала тяжесть информации ... Может кто-то помочь с этим вопросом плз ??

ответ

1

Решение может быть изменить свои функции, чтобы вернуть желаемую структуру:

function blabla_check_checkboxes() { 
    $orig_severity_levels = watchdog_severity_levels(); 
    $blabla_severity_levels = variable_get('blabla_severity_levels', array()); 
    foreach ($blabla_severity_levels as $level => $name) { 
    if ((int) $name) { 
     $blabla_severity_levels[$level] = $orig_severity_levels[$level]; 
    } 
    } 
    return $blabla_severity_levels; 
} 
0

Поскольку вы используете system_settings_form_submit - эта функция сохранит только ключи массива.

Вам необходимо найти обходное решение, например, иметь дополнительную функцию отправки или иметь функцию обертки для извлечения этого структурированного массива.

В этом случае вы пытаетесь чрезмерно использовать начальную область флажков.

+0

Я сделал это, и он показывает мне: 6 (String, 4-х символов) 6, 0 (Integer) 0, 1 (целое число) 0, 2 (Integer) 0, 3 (Integer) 0, 4 (Integer) 0, 5 (Integer) 0, 7 (Integer) 0, – Karmen

+0

спасибо за ваш ответ я действительно нужен для решения этой проблемы ...: /: /:/ – Karmen

+0

Я обновил свой ответ. – hugronaphor

Смежные вопросы