it-swarm.com.de

Kontrollkästchen: Wie setze ich die Standardwerte oder zeige die benutzerdefinierten Werte mithilfe der Formular-API an?

Ich verwende ein Kontrollkästchen-Element in einem Formular im Modul, das ich für Drupal 7.) entwickelt habe. Dies ist mein erster Versuch, ein Modul zu entwickeln und die Formular-API zu verwenden. Ich erstelle eine Liste von Kontrollkästchen, die Listen Sie alle Inhaltstypen einer bestimmten Site auf. Ein Array aller Inhaltstypen kann wie folgt abgerufen werden: $nodeTypesRaw=node_type_get_names();. Ein Array mit den Computernamen der Inhaltstypen als Schlüssel und Mensch lesbare Namen, wenn die Werte erhalten werden.

Standardmäßig möchte ich, dass alle Kontrollkästchen aktiviert sind und wann das Formular gesendet wird. Wie erreiche ich das? Die Formular-API-Seiten auf der Website drupal) sind nicht sehr hilfreich, um die Standardwerte für Kontrollkästchen festzulegen.

$nodeTypesRaw=node_type_get_names();
$nodeMachineNames=array_keys($nodeTypesRaw);
$form['process_comments']['custommod_published_comments_select_node_types']['custommod_published_comments_node_types_checkboxes']=array(
          '#deafult_value'=>$nodeMachineNames,
          '#options'=>$nodeTypesRaw,
          '#type'=>'checkboxes',
);

Ich habe anfangs mit dem obigen Code angefangen, aber es wird nicht funktionieren. Die Liste der Kontrollkästchen wird angezeigt, diese sind jedoch nicht standardmäßig aktiviert. Die Variable wird jedoch beim Senden des Formulars abgerufen (überprüft über drush und var_dump).

7
bcosynot

Von Drupal.org :

$form['element_id'] = array(
  '#type' => 'checkboxes',
  '#options' => array(1 => "One", 2 => "Two", 3 => "Three"),
  '#default_value' => array(1, 3),
);

Der Standardwert wird als Array festgelegt, das die Schlüssel ausgewählter Optionen darstellt.

Wenn Sie sich den Code in Ihrer Frage ansehen, liegt das Problem in der Rechtschreibung. Sie setzen '#deafult_value', wenn Sie '#default_value' setzen möchten.

16
Mołot

Sie müssen ein Array von Optionen Schlüssel (keine Werte) als Standardwert angeben, z.

$options = array(
  'option_1' => t('Option 1'),
  'option_2' => t('Option 2'),
  'option_3' => t('Option 3'),
);

$defaults = array_keys($options);

$form['checkboxes'] = array(
  '#type' => 'checkboxes',
  '#title' => t('Something'),
  '#options' => $options,
  '#default_value' => $defaults,
);
10
Clive