it-swarm.com.de

Legen Sie programmgesteuert den Standardwert für ein Feld fest

In Drupal 6) könnten wir PHP verwenden, um Standardwerte festzulegen, aber der gleiche Code kann nicht mit Drupal 7) verwendet werden .

Ich versuche dies über hook_form_alter() zu tun, aber der Code funktioniert nicht.

function my_form_alter(&$form, &$form_state, $form_id) {
  dsm($form);

  switch($form_id) {
    case 'accounts_node_form':
      $form["field_accounts"]["und"]['#default_value'] = $default;
      // …
      break;
  }
}
10
giorgio79

Angenommen, Ihre Formularänderungsfunktion wird tatsächlich ausgeführt (was Sie mit diesem Aufruf von dsm() bestätigen können), müssen Sie tatsächlich zwei weitere Array-Ebenen aufrufen, um zum Feldelement zu gelangen:

$form["field_accounts"][LANGUAGE_NONE][0]['value']['#default_value'] = $default;

In Drupal 7 haben Sie ein Array von Werten für jede Sprache, in die das Feld übersetzt wurde (damit Felder mit mehrfacher/unbegrenzter Kardinalität berücksichtigt werden können), und unter jeder davon befindet sich in Array für die verschiedenen Feldspalten. In den meisten Fällen ist dies 'Wert', aber nicht immer (zum Beispiel hat ein Bildfeld eine Datei-ID-Spalte, eine Alt-Spalte usw.).

Ich hoffe, das hilft

17
Clive

Das ist richtig:

function my_form_alter(&$form, &$form_state, $form_id) {
  dsm($form);

  switch($form_id) {
    case 'accounts_node_form':
      $form["field_accounts"][LANGUAGE_NONE][0]['value']['#default_value'] = $default;
      // …
      break;
  }
}
0
keopx

Das funktioniert gut:

function my_form_alter(&$form, &$form_state, $form_id) {
  dsm($form);
  switch($form_id) {
    case 'accounts_node_form':
      $form["field_accounts"]["und"][0]['value']['#default_value']=$default;
      break;
  }
}
0
keopx