2012-04-03 5 views
1

Ich habe ein Modell und hasMany Beziehung zu einem anderen Modell.saveAll speichert keine assoziierten Daten in CakePHP 2.0 nach der Verarbeitung des Formulars mit mehreren Select

Die Einzelfelddaten werden im Hauptmodell gespeichert, und die Daten aus der Dropdown-Auswahleingabe sollten im zugehörigen Modell gespeichert werden.

Wenn ich versuche, ein Array manuell zu erstellen und saveAll zu verwenden, funktioniert alles einwandfrei und die Daten werden gespeichert. Aber das Problem mit der Select-Eingabe ist in seinem Namen. Das richtige Format ist:

array(
    'Article' => array('title' => 'My first article'), 
    'Comment' => array(
     array('body' => 'Comment 1', 'user_id' => 1), 
     array('body' => 'Comment 2', 'user_id' => 12), 
     array('body' => 'Comment 3', 'user_id' => 40), 
    ), 
) 

Wenn die Auswahlliste erstellen und die Optionen Array übergeben, können wir SetOne Tag-Namen wie Comment.body nur, aber wir haben Comment.0.body, verwenden Comment.1.body usw.

So das Format der Post-Daten ist nicht lesbar für Cake erfolgreich saveAll zu verwenden.

Hat jemand dieses Problem festgestellt - mehrere Auswahleingaben mit korrekten Namen und Werten erzeugen?

Antwort

0

Wie generieren Sie Ihr Formular? Das richtige Format ist das zweite, das Sie sagten, Comment.0.body. Dafür benötigen Sie so etwas wie dieses:

echo $this->Form->input('Comment.0.body'); 
echo $this->Form->input('Comment.1.body'); 

generieren:

<input type='text' id='Comment0Body' name="data[Comment][0][body]" /> 
<input type='text' id='Comment1Body' name="data[Comment][1][body]" /> 
+0

Hallo Paulo und danke, aber das Problem, wenn ich 20 Elemente haben, so dass ich dies eine multiple Dropdown-Tag auswählen muss, ist das Problem, dass wir Eingabe-Namen für einmal mit $ this-> Form-> festlegen Wählen Sie ('Model.field', $ Optionen)) – Cassius

2

Das Problem durch die Umstellung auf eine $hasAndBelongsToMany Beziehung gelöst wurde.

Verwandte Themen