Standardwert für Auswahlliste festlegen [geschlossen]


16

Ich habe eine Auswahlliste mit Optionen:

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 

Ich versuche, den Standardwert auf 500 zu setzen:

$form['price']['min']['#options'] = $options; 
$form['price']['min']['#default_value'] = 500;

Aber das funktioniert nicht.


1
Ich bin auf dasselbe Problem gestoßen. Das Problem war, dass ich das Formular nicht mit drupal_get_form () renderte, sondern aufgrund des Anwendungsfalls auf eine andere Weise.
user1750

Ich bin auf die gleiche Frage gestoßen !!!! Wer kann mir helfen?
bluesky_still

1
500 sollte eine '500' sein, kein Integer.
Saadlulu

Antworten:


3

Ihr Code sollte funktionieren, verwenden Sie im Allgemeinen den Schlüsselwert als Standardwert, wenn er nicht funktioniert, machen Sie den String als Schlüssel und verwenden Sie ihn als Standardwert.


2

Ich habe dieses Problem noch nie gesehen. Dieser Standardwert sollte funktionieren. Ich würde sagen, versuchen Sie, den Schlüssel zu einer Zeichenfolge zu machen und #default_valueals Zeichenfolge festzulegen. Das #optionsArray wird möglicherweise array_merge irgendwo durchlaufen , wodurch ganzzahlige Schlüssel neu eingegeben werden. Wenn Schlüssel Zeichenfolgen sind, sollte das nicht passieren. Derzeit sieht Ihr Array folgendermaßen aus:

$options = array(
  0 => '0',
  500 => '500',
  1000 => '1000',
);

Durch die Weitergabe dieses Arrays array_mergekönnen diese ganzzahligen Schlüssel jedoch in der folgenden Reihenfolge reorganisiert werden:

$options = array(
  0 => '0',
  1 => '500',
  2 => '1000',
);

In diesem 500Fall existiert der Schlüssel einfach nicht. Dies liegt daran, array_mergedass Integer-Schlüssel nicht beibehalten werden sollen, Sie können jedoch Zeichenfolgen verwenden, um dies zu verhindern. Ich denke, Ihr Array sollte ungefähr so ​​aussehen:

$options = array(
  '0' => '0',
  '500' => '500',
  '1000' => '1000',
);

Dann können Sie einstellen #default_value:

$form['price']['min']['#default_value'] = '500';

Andernfalls gibt es irgendwo anders, wo die default_valuemöglicherweise überschrieben werden?


2

Haben Sie versucht, eine Zeichenfolge anstelle einer Ganzzahl zu verwenden?

$form['price']['min']['#default_value'] = "500"

Vielleicht ist es auch einen Versuch wert, den 'und'Schlüssel hinzuzufügen .


1

Haben Sie versucht, den Standardwert mithilfe des Schlüssels aus den $ -Optionen des Arrays zu definieren?
$form['price']['min']['#default_value'] = $options[500];


In diesem Fall wird technisch nur der Wert von $ options [500] übergeben, der (String) '500' ist.
Jordojuice

1
$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
        );

Um den Standardwert in der Auswahlliste festzulegen, verwenden wir den Parameter #default_value. Der Wert des Attributs default_value der Auswahlliste ist der Schlüssel des Auswahllisten-Arrays.


0

Der folgende Code zeigt das Feld mit dem Standardwert 500 an.

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
          '#title' => 'Price',
        );  

-1

Ich stellte das gleiche Problem gegenüber und ich versuchte, den Index des Arrays zu geben, das ich der Rückstellungswert sein möchte und es funktionierte. Meine Antwort ist ähnlich wie bei Ashok KS, aber seine zweite Zeile konnte ich nicht verstehen.


-1

behoben, wir sollten den Standardwert zuerst für dieses $ option-Array setzen, wenn wir zuletzt hinzugefügt haben, hat sich der Array-Schlüssel geändert [1] => science, [2] => drama, das Recht sollte [192] => science, [231 sein ] => Drama :-)


-1

Versuchen:

$ form ['price'] ['# default_value'] = 500;

Es ist eine gute Arbeit für mich.


-2

Das #default_valuesollte seine Argumente in der Form haben wie das #value.

$form['price']['min']['#default_value'] = $options['500'];

-4

Benutz einfach

$form['price']['min']['#default_value'] = 2 

Dies bedeutet, dass der Standardwert die Option 2eme verwendet


-5

LÖSUNG: Stellen Sie fest , dass form_select_options überhaupt nicht funktioniert #default_value. Also habe ich benutzt #value property:

$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;

2
Ausgewählte Optionen haben einen Standardwert. Das Einstellen des #valueParameters macht es dem Benutzer unmöglich, den Wert zu ändern.
googletorp

1
Schauen Sie sich den Code an, ich setze #value nur dann auf default_value, wenn #value keinen Wert enthält.
Breethe

Sie setzen immer einen Wert auf #value, entweder $_REQUEST['price']['min']oder $my_default_value. Was auch immer Sie in den Wert # eintragen, wird der Wert des Feldes sein, unabhängig davon, was der Benutzer eingibt.
googletorp

Wenn der Benutzer einen Wert eingibt, wird dieser Wert über GET ($ _REQUEST ['price'] ['min']) gesendet. Also, wenn der Benutzer den Wert eingibt, setze ich #value auf user input, andernfalls #value = $ my_default_value
breethe

Das ist das Problem. Benutzer können die Auswahl verwenden, aber es spielt keine Rolle, was sie auswählen, das Ergebnis ist das gleiche.
googletorp
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.