Frage

Ich habe eine bestehende Showcase, dass hasOne Galerie einsehen. Die Galerie ist bereits mit dem foreignKey showcase_id Satz auf den richtigen Wert. Die Galerie hat ein Textfeld, dass ich Update über den Showcase-Controller versuchen. Das Ergebnis, das ich bekommen, ist eine zusätzliche Galerie Eintrag, entlang der ursprünglichen, statt einer Aktualisierung des ursprünglichen Eintrag.

Was mache ich falsch?

My Showcase-Ansicht sieht wie folgt aus:

  

echo $form->create('Showcase', array('action'=>'update'));

     

echo $form->input('Showcase.id', array('type'=>'hidden', 'value'=>$showcase['Showcase']['id']));

     

echo $form->input('Gallery.fulltext', array('type'=>'textarea', 'between'=>'<br>', 'value'=>$showcase['Gallery']['fulltext']));

     

echo $form->submit('Submit text');

     

echo $form->end();

My Showcase-Controller-Funktion:

  

$uses = array('Showcase','Gallery')

     

function update(){

     

if(!empty($this->data)){

     

$this->Showcase->saveAll($this->data, array('validate'=>'first'));

     

}

     

}

Die Vitrine Modell $hasOne = 'Gallery' und die Galerie Modell $belongsTo = 'Showcase'.

Is $this->Showcase->saveAll() die richtige Funktion hier zu benutzen? Oder vielleicht muss ich die Galerie Eintrag in der Galerie-Controller aktualisieren? Das wird wahrscheinlich Arbeit aber scheint so un-elegant.

War es hilfreich?

Lösung

kann ich sehen, was Sie mit un-elegant zu sein, wäre es schön, wenn es realisiert man eine hasOne Beziehung hatte und daher alle vorhandenen Datensatz aktualisiert.

Jedoch derzeit im Rahmen Ich denke, die beste Wahl echo $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id'])); zu Ihrer Ansicht hinzuzufügen wäre.

Als Randnotiz. In der Controller-Aktion, die derzeit die Definition $showcase, wenn Sie es stattdessen zuweisen $this->data dann werden Sie nicht immer müssen 'value' => ... in Ihren Formulareingaben angeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top