php - Modify $this->request->data in model CakePHP? -
how can modify $this->request->data model in cakephp. tried code in model user :
public function beforevalidate($options = array()) { unset($this->request->data['user']['birthday']); } but return errors :
notice (8): indirect modification of overloaded property user::$request has no effect
warning (2): attempt modify property of non-object
if use (model user) :
public function beforevalidate($options = array()) { unset($this->data[$this->alias]['birthday']); } it's ok, after validate, when tried print_r($this->request->data) in controller, see birthday field still exists in it.
anyone can give me solution this, different between $this->data , $this->request->data, !!
edit : cakephp version 2.6.7 - newest version.
$this->request->data cannot accessed within model. data accessible controller. when attempt save data model controller (e.g. $this->user->save($this->request->data))) setting user model's data attribute. in other words, happening:-
$this->user->data = $this->request->data; so in model's callback methods can access data being saved using $this->data , manipulate have found in beforevalidate():-
public function beforevalidate($options = array()) { // unset 'birthday' data being saved unset($this->data[$this->alias]['birthday']); return parent::beforevalidate($options); } don't forget when using callback call parent method , ensure returns boolean. if doesn't return true data not saved!
if manipulate $this->data in model not affect $this->request->data can access model's data attribute within controller see changes. example, in controller after saving changes:-
// output user data debug($this->user->data); if want alter $this->request->data need within controller (presumably before save), not model:-
unset($this->request->data[$this->alias]['birthday']); just side note careful of unsetting data in model callback's everytime try save data (unless disable callback). unsetting birthdaywould result in never getting saved database.
Comments
Post a Comment