2010-12-09 2 views
2

Ich habe einen Controller namens Posts, ein Modell namens Content, die ordnungsgemäß mit anderen Modellen wie Kategorie und Standort verknüpft ist.Refill-Beziehungen in Form in CakePHP im Bearbeitungsmodus

In meiner Ansicht für add 'Inhalt' befülle ich erfolgreich die Multi-Auswahl-Listen mit Kategorien und Orten zu wählen, um den Beitrag zu beziehen. Speichern alles funktioniert perfekt.

Jetzt im Bearbeitungsmodus/Aktualisierungsmodus, kann ich die Mehrfachauswahl erneut mit Kategorien und Positionen füllen, aber es werden nicht diejenigen ausgewählt, die sich auf den aktuellen Beitrag beziehen. Wenn Sie in der Datenbank nachsehen, werden Kategorien und Orte erfolgreich auf den aktuellen Beitrag verteilt.
Dies ist, was ich in meinem Controller bekam:

$this->data = $this->Content->read(); 
$this->set('locations',$this->Content->Location->find('list',array('fields' => array('id','location')))); 
$this->set('categories',$this->Content->Category->find('list',array('fields' => array('id','category')))); 

Und das ist, was ich in meiner Sicht bekam:

echo $this->Form->input('Location', array('type' => 'select','multiple' => 'true','options' => $locations)); 
echo $this->Form->input('Category', array('type' => 'select','multiple' => 'true','options' => $categories)); 

Was hier bin ich fehlt? Wie bekomme ich die bereits verwandten Orte und Kategorien, die in den Mehrfachauswahllisten ausgewählt sind?

Dankbar für jede Hilfe (Abfüllung von Beziehungsdaten, werden Textfelder usw. einfach perfekt repopulate)!

Jason

Antwort

0

statt

$this->data = $this->Content->read() 

versuchen

$params['conditions'] = array(
    'Content.id' => $id 
); 
$params['contain'] = array(
    'Category', 
    'Location' 
); 
$this->data = $this->Content->find('first', $params); 

Sie das Containable Behaviour für das

+0

das hat funktioniert, danke Harpax! – Jason

+0

oops, sich zustimmend. über Posts gegangen und das jetzt gemacht. :) – Jason

0

Nutzung benötigen diese:

echo $this->Form->input('Location', array( 
      'label' => 'Location', 
      'type' => 'select', 
      'options' => $LocationArray, 
      'selected'=> 12(Selected Value) 
      ); 
Verwandte Themen