С макушки головы, что-то вроде этого должно работать:
function beforeFilter() {
// be sure to do this before any Auth or security checks
if ($this->RequestHandler->isPost() && $this->data) {
$this->Session->write('last_post_data', $this->data);
}
}
function add() {
if (!$this->data && $this->Session->check('last_post_data')) {
$this->data = $this->Session->read('last_post_data');
}
$this->Session->delete('last_post_data');
if ($this->data) {
// save as usual
}
}
Просто убедитесь, что правильно удалили данные POST, сохраненные в сеансе, иначе это может привести к разрушению в дальнейшем. На самом деле вы должны не только сохранить данные в сеансе, но и определить, для какого действия оно было предназначено ($this->action
и $this->controller
), и проверить это перед повторным использованием данных в действии. Возможно также установить очень жесткий тайм-аут данных.