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.

breethe
quelle
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.

Ashok KS
quelle
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?

jordojuice
quelle
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 .

silkAdmin
quelle
1

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

JurgenR
quelle
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.

Nitesh Sethia
quelle
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',
        );  
Aswini K
quelle
-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.

AgA
quelle
-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 :-)

bluesky_still
quelle
-1

Versuchen:

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

Es ist eine gute Arbeit für mich.

Tasneem
quelle
-2

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

$form['price']['min']['#default_value'] = $options['500'];
bluesky_still
quelle
-4

Benutz einfach

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

Dies bedeutet, dass der Standardwert die Option 2eme verwendet

Stevey
quelle
-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;
breethe
quelle
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