2009-10-09 9 views
12

mit CakePHP:CakePHP wählen Standardwert in SELECT Eingang

Ich habe eine viele-zu-eins-Beziehung, lassen Sie uns so tun, als es viele Blätter auf Bäume ist. Natürlich habe ich ein Formular gebacken, um ein Blatt zu einem Baum hinzuzufügen, und Sie können angeben, welcher Baum es ist, mit einer Drop-Down-Box (Tag), die vom Formularhelfer erstellt wurde.

Die einzige Sache ist, die SELECT-Box standardmäßig immer Baum # 1, aber ich mochte es auf den Baum auf dem Standard es hinzugefügt werden werden:

Zum Beispiel example.com/leaf/add/5 Aufruf würde die Schnittstelle bringen hinzufügen ein neues Blatt zu Baum # 5. Die Dropdown-Box für Leaf.tree_id würde standardmäßig "Tree 5" anstelle von "Tree 1", die es derzeit standardmäßig verwendet.

Was muss ich in meinen Leaf Controller und Leaf view/add.ctp tun, um dies zu tun?

Antwort

19

Sie sollten niemals select() oder text() oder radio() etc verwenden; es ist eine schreckliche Übung. Sie sollten input() verwenden:

$form->input('tree_id', array('options' => $trees)); 

dann in der Steuerung:

$this->data['Leaf']['tree_id'] = $id; 
+29

Ich bin mir nicht sicher über "schreckliche Praxis" – SeanDowney

+2

Können Sie das bitte etwas besser erklären? Wo ist diese Variable '$ tree' definiert? Ist nicht $ Optionen ein Array mit Schlüssel der Typ der Option? – mgPePe

+3

Glaubt was er sagt Miles, ist eine schreckliche Praxis, ich habe 2:00 Stunden meines Lebens damit verbracht, das "Nachher" -Attribut von Cake mit einem $ this-> Form-> Select() zu setzen und tut es nicht funktioniert gut. Um wertvolle Zeit zu sparen, verwenden Sie $ this-> Form-> als Select. – BruneX

1

Angenommen, Sie Formular-Helfer werden mit der Form zu erzeugen:

select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty) 

Stellen Sie den dritten Parameter, um die gewählte Option zu setzen.

+0

Hey, ich habe den folgenden Code: Optionen $ = array ('1' => 'opt1', '2' => 'opt2', '3' => 'OPT3'); echo $ form-> select ('Feldname', $ Optionen, ???, array(), falsch); Was ist das Format für den 3. Parameter, um das ausgewählte Element zu setzen? Ich kann es nicht richtig verstehen. – cardflopper

+0

sollte es der Wert der gewählten Option sein –

+0

In welcher Version von CakePHP ist dies - Ich kann Dokumentation weder in 1.1, 1.2 oder 1.3 finden? – icc97

8

die dritten Parameter wie Array sein sollen ('ausgewählt' => value)

+0

Dies ist nur, wenn Sie möchten, dass der Wert IMMER ausgewählt wird – dfmiller

48

In CakePHP 1.3, verwenden 'default'=>value zu Wählen Sie den Standardwert in einem Auswahleingang:

$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3')); 
+9

Warum ist dies nicht als Antwort markiert? Dies ist der richtige (der andere könnte ein Vorschlag sein, aber das ist die wirkliche Antwort auf die Frage!) –

+0

Berücksichtigen Sie die Latenzzeit aufgrund des Cache von CakePHP ... –

+3

Dies ist in Cake 1.2 auch korrekt. Um zu verhindern, dass Sie verrückt werden - aktualisieren Sie nicht nur die Seite, um zu sehen, ob der Standard funktioniert (er bleibt bei welchem ​​Wert auch immer), Sie müssen eine Seite zurückgehen und erneut auf die Seite klicken (oder gehen Klicken Sie in die Adressleiste und drücken Sie die Eingabetaste. – icc97

0

Verwenden Sie die $form->select() Methode, um einen Textstandard in einem Auswahlfeld zu erstellen. Hier ist, wie Sie es tun.

$options = array('m'=>'Male','f'=>'Female','n'=>'neutral'); 

$form->select('Model.name',$options,'f'); 

Der obige Code wird standardmäßig Female im Listenfeld auswählen. Dies wird wählen Sie die Standard zweite Indexpositionswert aus der Liste der Option in $ Blätter

Backen halten ...

0
FormHelper::select(string $fieldName, array $options, 
array $attributes) 

$attributes['value'] einstellen, welcher Wert

<?php echo $this->Form->select('status', $list, array(
    'empty' => false, 
    'value' => 1) 
); ?> 
7
$this->Form->input('Leaf.id', array(
'type'=>'select', 
'label'=>'Leaf', 
'options'=>$leafs, 
'value'=>2 
)); 

Standard ausgewählt werden .

0

Wenn Sie cakephp Version 3.0 und höher verwenden, können Sie den Standardwert in der Select-Eingabe mit dem leeren Attribut wie im folgenden Beispiel angegeben hinzufügen.

echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']); 
Verwandte Themen