ich bin heute über ein kleines Problem gestolpert, was ich nicht lösen kann.
Mein UsersController besitzt die Funktion editAccount. Die Funktion beinhaltet die Logik zum Speichern der Kontoinformationen eines Nutzers. Die Funktion edit wird anders verwendet.
Ich hab nun eine Route /account für /users/editAccount erstellt. Die id des Nutzers wird aus der Session gelesen und für das Formular verwendet, also wird keine id in der URL übergeben. Sobald ich aber die Daten per submit an den Controller sende, der Daten speichert (oder auch nicht), dann hängt cake nach dem redirect automatisch die User id an.
Dann habe ich auch folgende URL in der Adressleiste zu stehen: /users/editAccount/1.
Somit greift auch nicht mehr die Route-Regel.
Jedenfalls möchte ich, dass in dem Fall keine id angehängt wird. Zumal meine Funktion auch keinen Parameter erwartet.
UsersController
- Code: Alles auswählen
- function editAccount() {
$this->User->recursive = 0;
if (!empty($this->data)) {
if (empty($this->data['User']['new_password'])) {
unset($this->User->validate['new_password']);
} else {
$this->data['User']['password'] = $this->Auth->password($this->data['User']['new_password']);
}
if ($this->User->save($this->data)) {
$this->Session->setFlash(__('Your settings have been saved.', true), 'default', array('class' => 'success'));
} else {
$this->Session->setFlash(__('Your settings could not be saved.', true), 'default', array('class' => 'failure'));
}
}
if (empty($this->data)) {
$this->data = $this->User->read(null, $this->Session->read('Auth.User.id'));
}
}
Ds Auslesen von $this->params zeigt, dass [pass] das Paar [0] => 1 und [url] das Paar [url] => users/editAccount/1 nach dem Absenden hat. Warum wird die id angehangen?
Vielleicht weiß ja jemand Rat. Die Internetsuche hat leider nichts brauchbares ausgespuckt.