HABTM-Dropdown-Elemente nicht ausgewählt

Ich habe aus Spaß eine Website zum Erlernen von CakePHP erstellt, aber aus irgendeinem Grund kann ich keine Dropdown-Box mit Mehrfachauswahl zum Anzeigen meiner ausgewählten Elemente erhalten. In diesem Beispiel kann 1 Videospiel mehrere Schwierigkeiten haben (einfach, normal, schwer). Auf meiner Spielbearbeitungsseite habe ich ein Mehrfachauswahlfeld, um die Schwierigkeiten auszuwählen. Es zeigt alle drei Schwierigkeiten und ich kann sie auswählen und es speichert richtig. Wenn ich jedoch zur Bearbeitungsseite zurückkehre, werden die zuvor gespeicherten Elemente nicht als ausgewählt markiert angezeigt. Ich habe überprüft, dass die Datensätze korrekt in der Datenbank gespeichert werden.

Tische: Spiele Schwierigkeiten schwierigkeiten_spiele

Modelle:

class Game extends AppModel {
public $actsAs = array('Containable');
public $hasAndBelongsToMany = array(
    'Difficulty' =>
        array(
            'className' => 'Difficulty',
            'joinTable' => 'difficulties_games',
            'foreignKey' => 'game_id',
            'associationForeignKey' => 'difficulty_id',
            'unique' => 'true'
            )
);
}
class Difficulty extends AppModel {
public $actsAs = array('Containable');
public $hasAndBelongsToMany = array(
    'Game' =>
        array(
            'className' => 'Game',
            'joinTable' => 'difficulties_games',
            'foreignKey' => 'difficulty_id',
            'associationForeignKey' => 'game_id',
            'unique' => 'true'
            )
);
}

Regler:

$game = $this->Game->findById($id);
$this->set('difficulties', $this->Game->Difficulty->find('list'));

Ansicht (edit.ctp):

echo $this->Form->input('Difficulty');

Das muss etwas Einfaches sein, was mir fehlt, aber ich habe das Buch über HABTM gelesen und hier gesucht und konnte auf Mehrfachauswahlboxen nicht viel finden.

AKTUALISIEREN:

Hier ist die gesamte Bearbeitungsfunktion in der Steuerung:

public function edit($id = null) {
    if (!$id) {
        throw new NotFoundException(__('Invalid post'));
    }

    $game = $this->Game->findById($id);
    if (!$game) {
        throw new NotFoundException(__('Invalid post'));
    }
    if ($this->request->is('post') || $this->request->is('put')) {
        $this->Game->id = $id;
        if ($this->Game->saveAll($this->request->data)) {
            $this->Session->setFlash('Your game has been updated.');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash($this->Game->invalidFields());
        }
    }

    if (!$this->request->data) {
        $this->request->data = $game;
    }
    $this->set('systems', $this->Game->System->find('list'));
    $this->set('genres', $this->Game->Genre->find('list'));
    $this->set('difficulties', $this->Game->Difficulty->find('list'));


}

Auch hier noch ein paar Infos zum View:

echo $this->Form->create('Game');
echo $this->Form->input('name');
echo $this->Form->input('system_id');
echo $this->Form->input('genre_id');
echo $this->Form->input('Difficulty');
echo $this->Form->input('id', array('type' => 'hidden'));
echo $this->Form->end('Save Game');

Antworten auf die Frage(2)

Ihre Antwort auf die Frage