я хочу изменить свои флажки

у меня есть несколько флажков со значениями 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());
}

Теперь, если выбрать только флажок информации и экспортировать значения $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;
}
1

Другие решения

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

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

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

0

По вопросам рекламы [email protected]