It seems I found the problem, at least at first sight. It appears it is not sufficient to do a Find on the model, it is necessary to invoke either Set or Create on the model with the found (or newly created) record so that all the data gets properly populated. Then it works fine.
On Wednesday, July 4, 2012 7:00:29 PM UTC+2, tigr wrote: > > Hi! > > There is something I do not understand. I have a plugin where I save some > data into related models. When I do it with a Save, everything works fine. > As soon as I try to use SaveAssociated, I get this error (and it is > interfering of course with the headers). Can someone confirm that this is > either something silly or a bug, please? > > *Warning* (2): Illegal offset type in isset or empty > [*CORE/Cake/Model/ModelValidator.php*, line *391*] > Code Context > > $exists = $model->exists(); $methods = $this->getMethods(); > $fields = $this->_validationList($fieldList); > > $model = object(AccountPassword) {} > $whitelist = array( > 'Account' => array( > [maximum depth reached] > ), > 'AccountFlag' => array( > [maximum depth reached] > ) > ) > $validateList = array() > $f = array( > (int) 0 => 'active' > ) > > ModelValidator::_validationList() - CORE/Cake/Model/ModelValidator.php, line > 391 > ModelValidator::errors() - CORE/Cake/Model/ModelValidator.php, line 248 > ModelValidator::validates() - CORE/Cake/Model/ModelValidator.php, line 85 > Model::validates() - CORE/Cake/Model/Model.php, line 3010 > ModelValidator::validateAssociated() - CORE/Cake/Model/ModelValidator.php, > line 141 > Model::validateAssociated() - CORE/Cake/Model/Model.php, line 2322 > Model::saveAssociated() - CORE/Cake/Model/Model.php, line 2186 > AccountsController::delete() - > APP/Plugin/Z/Controller/AccountsController.php, line 103 > ReflectionMethod::invokeArgs() - [internal], line ?? > Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 485 > Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 186 > Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 161 > [main] - APP/webroot/index.php, line 92 > > > Code is simple and straightforward: > > $options = array( > 'fieldList' => array( > 'Account' => array( > 'active' > ), > 'AccountFlag' => array( > 'deleted', > 'deleted_date' > ) > ) > ); > $this->Account->saveAssociated(null, $options); > > And the alternative of > > $this->Account->save(null, array('fieldList' => > array('Account' => array('active')))); > $this->Account->AccountFlag->save(null, > array('fieldList' => array('AccountFlag' => > array('deleted', 'deleted_date')))); > > works just fine. > > Thanks! > > -- Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions. To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php