ich bin neu hier und auch noch CakePHP-Neuling.
Ich arbeite zur Zeit an einer kleinen Datenverwaltungsapp mit dem Framework (nutze die 2.0.3) und habe noch so meine Probleme mit den Namenskoventionen, bzw. wie man diese umgeht. Ich habe schon stundenlang gesucht, finde aber keine passende Lösung (auch wenn ich glaube, dass ich nicht so weit davon entfernt bin.
Also es geht um folgendes:
Ich habe in meiner Anwendung die Modelle User und Survey. Jede Survey hat drei belongsTo-Beziehungen zu User:
- created_by
- modified_by, und
- manager.
Um das zu realisieren habe ich jetzt folgenden Code (ich beschränke mich mal auf die Add-Action, für Edit gilt das analog):
- in der Modell-Klasse für Surveys (app/Model/Survey.php):
- Code: Alles auswählen
- im Controller für die Surveys(app/Controller/SurveysController.php):
- Code: Alles auswählen
public function add() {
if ($this->request->is('post')) {
$this->Survey->create();
if ($this->Survey->save($this->request->data)) {
$this->Session->setFlash(__('The survey has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The survey could not be saved. Please, try again.'));
}
}
/* ...weiterer Code... */
$managers = $this->Survey->Manager->find('list', array(
'fields' => array('Manager.id', 'Manager.username'),
));
$this->set(compact('audiometries', 'experimentees', 'users', 'managers'));
}
- in der Modell-Klasse für User(app/Model/User.php):
- Code: Alles auswählen
- in der View für das Add-Formular des Survey-Controllers(/app/View/Surveys/add.ctp):
- Code: Alles auswählen
echo $this->Form->input('Manager');
So wird mein select-Element im Formular auch mit den entsprechenden User-Namen bevölkert, allerdings wird der ausgewählte Wert nicht korrekt abgespeichert, d.h. es wird dort gar nichts eingetragen.
Nachdem ich in der Doku gestöbert habe, habe ich für das Form-Element auch noch andere Varianten ausprobiert.
- Code: Alles auswählen
- echo $this->Form->input('manager_id');
Das Element wird nicht befüllt, aber ich kann trotzdem nichts speichern.- Code: Alles auswählen
- echo $this->Form->input('manager');
Statt des Select bekomme ich ein Eingabefeld für eine Zahl, die wird dafür aber gespeichert.
Ich denke, das ganze hat irgendwas mit den nicht beachteten Namenskonventionen zu tun, aber ich komme nicht dahinter. Ich wäre sehr dankbar, wenn mir hier jemand auf die Sprünge helfen könnte.
Viele Grüße,
Marc